diff --git a/app/src/gambas3/.lang/.pot b/app/src/gambas3/.lang/.pot
index 526baf609..0d54e204c 100644
--- a/app/src/gambas3/.lang/.pot
+++ b/app/src/gambas3/.lang/.pot
@@ -134,7 +134,7 @@ msgstr ""
msgid "Image routines from the Imlib2 library"
msgstr ""
-#: CComponent.class:105 FPropertyProject.class:2063
+#: CComponent.class:105 FPropertyProject.class:2099
msgid "Image loading and saving"
msgstr ""
@@ -242,15 +242,15 @@ msgstr ""
msgid "Web applications tools"
msgstr ""
-#: CComponent.class:137 FPropertyProject.class:2051
+#: CComponent.class:137 FPropertyProject.class:2087
msgid "Graphical form management"
msgstr ""
-#: CComponent.class:138 FPropertyProject.class:2057
+#: CComponent.class:138 FPropertyProject.class:2093
msgid "Event loop management"
msgstr ""
-#: CComponent.class:140 FPropertyProject.class:2069
+#: CComponent.class:140 FPropertyProject.class:2105
msgid "OpenGL display"
msgstr ""
@@ -258,31 +258,31 @@ msgstr ""
msgid "Loading information on component &1..."
msgstr ""
-#: CComponentBox.class:97
+#: CComponentBox.class:100
msgid "Experimental"
msgstr ""
-#: CComponentBox.class:99 FPropertyProject.class:1804
+#: CComponentBox.class:102 FPropertyProject.class:1840
msgid "Not finished but stable"
msgstr ""
-#: CComponentBox.class:205 ProjectItem.class:68
+#: CComponentBox.class:224 ProjectItem.class:68
msgid "Authors"
msgstr ""
-#: CComponentBox.class:212 FPropertyProject.class:2031
+#: CComponentBox.class:231 FPropertyProject.class:2067
msgid "Requires"
msgstr ""
-#: CComponentBox.class:214
+#: CComponentBox.class:233
msgid "Excludes"
msgstr ""
-#: CComponentBox.class:220
+#: CComponentBox.class:239
msgid "Implements"
msgstr ""
-#: CComponentBox.class:233 LibraryItem.class:58
+#: CComponentBox.class:252 LibraryItem.class:58
msgid "Provides"
msgstr ""
@@ -478,7 +478,7 @@ msgstr ""
#: FImportTable.class:39 FList.class:155 FMain.class:193
#: FMakeInstall.class:318 FMenu.class:1202 FNewConnection.class:317
#: FNewTable.class:165 FNewTranslation.class:70 FOpenProject.class:502
-#: FOption.class:600 FPasteSpecial.class:279 FPropertyProject.class:1017
+#: FOption.class:600 FPasteSpecial.class:279 FPropertyProject.class:1053
#: FReportBorderChooser.class:207 FReportCoordChooser.class:114
#: FSave.class:118 FSaveProjectAs.class:130 FSelectExtraFile.class:78
#: FSelectIcon.class:273 FSnippet.class:142 FTableChooser.class:144
@@ -503,7 +503,7 @@ msgstr ""
msgid "Project commit"
msgstr ""
-#: FCommit.class:195 FMakeInstall.class:1299 FPropertyProject.class:1585
+#: FCommit.class:195 FMakeInstall.class:1299 FPropertyProject.class:1621
msgid "Description"
msgstr ""
@@ -946,7 +946,7 @@ msgid "Style sheet"
msgstr ""
#: FCreateFile.class:791 FCreateProject.class:535 FImportTable.class:526
-#: FPropertyProject.class:1607
+#: FPropertyProject.class:1643
msgid "Options"
msgstr ""
@@ -1096,7 +1096,7 @@ msgstr ""
msgid "Identification"
msgstr ""
-#: FCreateProject.class:647 FPropertyProject.class:1574
+#: FCreateProject.class:647 FPropertyProject.class:1610
msgid "Title"
msgstr ""
@@ -1203,7 +1203,7 @@ msgstr ""
msgid "Add expression"
msgstr ""
-#: FDebugInfo.class:1231 FMakeInstall.class:1599 FPropertyProject.class:2109
+#: FDebugInfo.class:1231 FMakeInstall.class:1599 FPropertyProject.class:2145
msgid "&Add"
msgstr ""
@@ -1212,7 +1212,7 @@ msgid "Remove current expression"
msgstr ""
#: FDebugInfo.class:1239 FMain.class:2605 FMakeInstall.class:1605
-#: FOption.class:1579 FPropertyProject.class:1879
+#: FOption.class:1579 FPropertyProject.class:1915
msgid "&Remove"
msgstr ""
@@ -1614,7 +1614,7 @@ msgstr ""
msgid "Go to line"
msgstr ""
-#: FHelpBrowser.class:22 FPropertyProject.class:1729
+#: FHelpBrowser.class:22 FPropertyProject.class:1765
msgid "Default language"
msgstr ""
@@ -1964,7 +1964,7 @@ msgstr ""
msgid "This file has not been modified since the last commit."
msgstr ""
-#: FInfo.class:304 FOption.class:948 FPropertyProject.class:1518
+#: FInfo.class:304 FOption.class:948 FPropertyProject.class:1554
msgid "General"
msgstr ""
@@ -1980,7 +1980,7 @@ msgstr ""
msgid "Last modified"
msgstr ""
-#: FInfo.class:390 FPropertyProject.class:1987
+#: FInfo.class:390 FPropertyProject.class:2023
msgid "Versioning"
msgstr ""
@@ -1996,7 +1996,7 @@ msgstr ""
msgid "Edit list property"
msgstr ""
-#: FList.class:274 FMenu.class:924 FPropertyProject.class:1930
+#: FList.class:274 FMenu.class:924 FPropertyProject.class:1966
msgid "&Insert"
msgstr ""
@@ -2472,7 +2472,7 @@ msgstr ""
msgid "Properties"
msgstr ""
-#: FMakeExecutable.class:18 FPropertyProject.class:1265
+#: FMakeExecutable.class:18 FPropertyProject.class:1301
msgid "Gambas applications"
msgstr ""
@@ -2532,7 +2532,7 @@ msgstr ""
msgid "There is no CHANGELOG entry for this release."
msgstr ""
-#: FMakeInstall.class:318 FPropertyProject.class:1017 FSave.class:111
+#: FMakeInstall.class:318 FPropertyProject.class:1053 FSave.class:111
#: Project.module:2856
msgid "Continue"
msgstr ""
@@ -3046,11 +3046,11 @@ msgstr ""
msgid "Sort properties"
msgstr ""
-#: FOption.class:1028 FPropertyProject.class:1660
+#: FOption.class:1028 FPropertyProject.class:1696
msgid "No"
msgstr ""
-#: FOption.class:1028 FPropertyProject.class:1660
+#: FOption.class:1028 FPropertyProject.class:1696
msgid "Yes"
msgstr ""
@@ -3078,7 +3078,7 @@ msgstr ""
msgid "Default tab size"
msgstr ""
-#: FOption.class:1166 FPropertyProject.class:1635
+#: FOption.class:1166 FPropertyProject.class:1671
msgid "space(s)"
msgstr ""
@@ -3313,187 +3313,187 @@ msgstr ""
msgid "Snapping value is incorrect."
msgstr ""
-#: FPropertyProject.class:441
+#: FPropertyProject.class:453
msgid "These components are incompatible:
&1."
msgstr ""
-#: FPropertyProject.class:454
+#: FPropertyProject.class:466
msgid "The &1 component needs one of the following components:
&2."
msgstr ""
-#: FPropertyProject.class:461
+#: FPropertyProject.class:473
msgid "The &1 component needs the &2 component."
msgstr ""
-#: FPropertyProject.class:866
+#: FPropertyProject.class:902
msgid "Cannot write component description file."
msgstr ""
-#: FPropertyProject.class:1008
+#: FPropertyProject.class:1044
msgid "Unable to update project from repository."
msgstr ""
-#: FPropertyProject.class:1010
+#: FPropertyProject.class:1046
msgid "Project has been updated from repository successfully."
msgstr ""
-#: FPropertyProject.class:1017
+#: FPropertyProject.class:1053
msgid "You are going to cancel your changes!"
msgstr ""
-#: FPropertyProject.class:1264
+#: FPropertyProject.class:1300
msgid "Select a Gambas application"
msgstr ""
-#: FPropertyProject.class:1275
+#: FPropertyProject.class:1311
msgid "&1 is already used as a library."
msgstr ""
-#: FPropertyProject.class:1281
+#: FPropertyProject.class:1317
msgid "&1 does not export any class."
msgstr ""
-#: FPropertyProject.class:1488
+#: FPropertyProject.class:1524
msgid "GB_GUI=gb.qt4"
msgstr ""
-#: FPropertyProject.class:1494
+#: FPropertyProject.class:1530
msgid "GB_GUI=gb.gtk"
msgstr ""
-#: FPropertyProject.class:1547
+#: FPropertyProject.class:1583
msgid "Version"
msgstr ""
-#: FPropertyProject.class:1597
+#: FPropertyProject.class:1633
msgid "Author(s)"
msgstr ""
-#: FPropertyProject.class:1612
+#: FPropertyProject.class:1648
msgid "Edition"
msgstr ""
-#: FPropertyProject.class:1623
+#: FPropertyProject.class:1659
msgid "Tab size"
msgstr ""
-#: FPropertyProject.class:1643
+#: FPropertyProject.class:1679
msgid "Compilation"
msgstr ""
-#: FPropertyProject.class:1654
+#: FPropertyProject.class:1690
msgid "Module symbols are public by default"
msgstr ""
-#: FPropertyProject.class:1671
+#: FPropertyProject.class:1707
msgid "Form controls are public"
msgstr ""
-#: FPropertyProject.class:1688
+#: FPropertyProject.class:1724
msgid "Get version from program"
msgstr ""
-#: FPropertyProject.class:1701 FTranslate.class:1523
+#: FPropertyProject.class:1737 FTranslate.class:1523
msgid "Translation"
msgstr ""
-#: FPropertyProject.class:1712
+#: FPropertyProject.class:1748
msgid "Project is translatable"
msgstr ""
-#: FPropertyProject.class:1744
+#: FPropertyProject.class:1780
msgid "Debugging"
msgstr ""
-#: FPropertyProject.class:1755
+#: FPropertyProject.class:1791
msgid "Use a terminal emulator"
msgstr ""
-#: FPropertyProject.class:1769
+#: FPropertyProject.class:1805
msgid "Component"
msgstr ""
-#: FPropertyProject.class:1780
+#: FPropertyProject.class:1816
msgid "This project is a component"
msgstr ""
-#: FPropertyProject.class:1797
+#: FPropertyProject.class:1833
msgid "Component advancement"
msgstr ""
-#: FPropertyProject.class:1804
+#: FPropertyProject.class:1840
msgid "Finished and stable"
msgstr ""
-#: FPropertyProject.class:1804
+#: FPropertyProject.class:1840
msgid "Beta version"
msgstr ""
-#: FPropertyProject.class:1808
+#: FPropertyProject.class:1844
msgid "Components"
msgstr ""
-#: FPropertyProject.class:1812
+#: FPropertyProject.class:1848
msgid "Show only components used in project"
msgstr ""
-#: FPropertyProject.class:1818
+#: FPropertyProject.class:1854
msgid "Show components in beta version"
msgstr ""
-#: FPropertyProject.class:1831
+#: FPropertyProject.class:1867
msgid "About &component..."
msgstr ""
-#: FPropertyProject.class:1842
+#: FPropertyProject.class:1878
msgid "&Reset"
msgstr ""
-#: FPropertyProject.class:1860
+#: FPropertyProject.class:1896
msgid "Libraries"
msgstr ""
-#: FPropertyProject.class:1873
+#: FPropertyProject.class:1909
msgid "&Add..."
msgstr ""
-#: FPropertyProject.class:1905
+#: FPropertyProject.class:1941
msgid "Environment"
msgstr ""
-#: FPropertyProject.class:1915
+#: FPropertyProject.class:1951
msgid "Arguments"
msgstr ""
-#: FPropertyProject.class:1958
+#: FPropertyProject.class:1994
msgid "Environment variables"
msgstr ""
-#: FPropertyProject.class:1992
+#: FPropertyProject.class:2028
msgid "Changes since last commit"
msgstr ""
-#: FPropertyProject.class:2005
+#: FPropertyProject.class:2041
msgid "There is no change to commit."
msgstr ""
-#: FPropertyProject.class:2014
+#: FPropertyProject.class:2050
msgid "&Update"
msgstr ""
-#: FPropertyProject.class:2020
+#: FPropertyProject.class:2056
msgid "&Revert..."
msgstr ""
-#: FPropertyProject.class:2026
+#: FPropertyProject.class:2062
msgid "&Commit..."
msgstr ""
-#: FPropertyProject.class:2036
+#: FPropertyProject.class:2072
msgid "Features"
msgstr ""
-#: FPropertyProject.class:2121
+#: FPropertyProject.class:2157
msgid "Remove All"
msgstr ""
diff --git a/app/src/gambas3/.src/Component/CComponentBox.class b/app/src/gambas3/.src/Component/CComponentBox.class
index eb245d088..8b4291754 100644
--- a/app/src/gambas3/.src/Component/CComponentBox.class
+++ b/app/src/gambas3/.src/Component/CComponentBox.class
@@ -5,7 +5,7 @@ Inherits UserControl
Event Click
Property Read Key As String
-Property Value As Boolean
+Property Read Value As Boolean
Property Locked As Boolean
Property Expanded As Boolean
@@ -20,6 +20,9 @@ Private txtInfo As TextLabel
Private panVBox As VBox
Private $bCheck As Boolean
+Private $bGray As Boolean
+Private $aComp As New String[]
+
Private $bLock As Boolean
Private $sKey As String
Private $sInfo As String
@@ -131,14 +134,30 @@ End
Private Sub RefreshCheck()
- picCheck.Picture = Picture[If($bCheck, "img/16/checked.png", "img/16/unchecked.png")]
+ Dim sImage As String
+
+ If $bCheck Then
+ If $bGray Then
+ sImage = "checked-gray"
+ Else
+ sImage = "checked"
+ Endif
+ Else
+ sImage = "unchecked"
+ Endif
+
+ picCheck.Picture = Picture["img/16/" & sImage & ".png"]
End
Public Sub picCheck_MouseDown()
If $bLock Then Return
- $bCheck = Not $bCheck
+ If $bCheck And If Not $bGray Then
+ Uncheck("")
+ Else
+ Check("")
+ Endif
RefreshCheck
Raise Click
@@ -150,12 +169,12 @@ Private Function Value_Read() As Boolean
End
-Private Sub Value_Write(Value As Boolean)
-
- $bCheck = Value
- RefreshCheck
-
-End
+' Private Sub Value_Write(Value As Boolean)
+'
+' $bCheck = Value
+' RefreshCheck
+'
+' End
Private Function Locked_Read() As Boolean
@@ -275,3 +294,33 @@ Public Sub Watcher_Arrange()
Endif
End
+
+Public Sub Check(Optional sComponent As String)
+
+ If $aComp.Exist(sComponent) Then Return
+
+ $aComp.Add(sComponent)
+ If Not $bCheck Then
+ $bCheck = True
+ $bGray = sComponent <> ""
+ Else
+ If Not sComponent Then $bGray = False
+ Endif
+
+ RefreshCheck
+
+End
+
+Public Sub Uncheck(Optional sComponent As String)
+
+ Dim iFind As Integer = $aComp.Find(sComponent)
+
+ If iFind < 0 Then Return
+
+ $aComp.Remove(iFind)
+
+ $bCheck = $aComp.Count > 0
+ If sComponent = "" Then $bGray = $bCheck
+ RefreshCheck
+
+End
diff --git a/app/src/gambas3/.src/Project/FPropertyProject.class b/app/src/gambas3/.src/Project/FPropertyProject.class
index 1ede941b5..fa1f45bbb 100644
--- a/app/src/gambas3/.src/Project/FPropertyProject.class
+++ b/app/src/gambas3/.src/Project/FPropertyProject.class
@@ -324,10 +324,19 @@ End
'
' END
+Private Sub GetRequire(sComp As String) As String[]
+
+ Dim hComp As CComponent = CComponent.All[sComp]
+
+ Return hComp.Require
+
+End
+
Private Sub RefreshComponents()
Dim sLib As String
+ Dim sDep As String
Dim hComp As CComponent
Dim hSep As Label
Dim aRemove As New String[]
@@ -359,16 +368,19 @@ Private Sub RefreshComponents()
If $bShowUsed Then
If sLib <> "gb" And If Not Project.Components.Exist(hComp.Key) Then Continue
Endif
- hCompBox = New CComponentBox(lstComponent, hComp, bDark)
+ hCompBox = New CComponentBox(lstComponent, hComp, bDark) As "Component"
bDark = Not bDark
$cComp[hComp.Key] = hCompBox
hCompBox.Locked = sLib = "gb" Or $bShowUsed
Next
For Each sLib In Project.Components
- $cComp[sLib].Value = True
+ $cComp[sLib].Check("")
+ For Each sDep In GetRequire(sLib)
+ $cComp[sDep].Check(sLib)
+ Next
Next
- $cComp["gb"].Value = True
+ $cComp["gb"].Check("")
CComponentBox.ResizeNames(lstComponent)
@@ -468,17 +480,41 @@ Private Sub CheckComponentConfig() As Boolean
End
-Private Function CheckComponent(sKey As String, bCheck As Boolean) As Boolean
+' Private Function CheckComponent(sKey As String, bCheck As Boolean) As Boolean
+'
+' Dim bBefore As Boolean
+' Dim sDep As String
+'
+' bBefore = IsChecked(sKey)
+' If bBefore = bCheck Then Return
+'
+' If bCheck Then
+' $cComp[sKey].Check("")
+' For Each sDep In GetRequire(sKey)
+' $cComp[sDep].Check(sKey)
+' Next
+' Else
+' $cComp[sKey].Uncheck("")
+' Endif
+'
+' End
- Dim bBefore As Boolean
-
- bBefore = IsChecked(sKey)
- If bBefore = bCheck Then Return
-
- $cComp[sKey].Value = bCheck
+Public Sub Component_Click()
+ Dim hCompBox As CComponentBox = Last
+ Dim sDep As String
+
+ For Each sDep In GetRequire(hCompBox.Key)
+ If hCompBox.Value Then
+ $cComp[sDep].Check(hCompBox.Key)
+ Else
+ $cComp[sDep].Uncheck(hCompBox.Key)
+ Endif
+ Next
+
End
+
' PRIVATE FUNCTION CheckComponent(sKey AS String, bCheck AS Boolean) AS Boolean
'
' DIM hComp AS CComponent
diff --git a/app/src/gambas3/img/16/checked-gray.png b/app/src/gambas3/img/16/checked-gray.png
new file mode 100644
index 000000000..d729a5483
Binary files /dev/null and b/app/src/gambas3/img/16/checked-gray.png differ
diff --git a/app/src/gambas3/support.txt b/app/src/gambas3/support.txt
index 20ffc31d1..5b7ab985e 100644
--- a/app/src/gambas3/support.txt
+++ b/app/src/gambas3/support.txt
@@ -73,3 +73,4 @@
2 Francisco Mora Sánchez
1 Louviaux
1 Cooke Dylan
+1 Leonardo Suárez Arce