From 8caef506b4be90d8bd165c73ffa193aad5afd51a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BE=9D=E7=91=AA=E8=B2=93?= Date: Wed, 7 Dec 2016 15:08:08 +0800 Subject: [PATCH] =?UTF-8?q?Added=20code=20to=20display=20the=20Pok=C3=A9mo?= =?UTF-8?q?n=20image=20when=20choosing=20the=20Pok=C3=A9mon,=20and=20the?= =?UTF-8?q?=20team=20log=20when=20choosing=20the=20team.=20=20The=20Pok?= =?UTF-8?q?=C3=A9mon=20images=20are=20not=20fully-processed=20yet.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- PokemonGoIV/0Main.vb | 453 +---------- oxt/AddonConfiguration.xcu | 755 ++++++++++++++++++ oxt/PokemonGoIV/0Main.xba | 453 +---------- .../DialogStrings_en_US.properties | 8 +- .../DialogStrings_zh_TW.properties | 4 +- oxt/PokemonGoIV/DlgMain.xdl | 68 +- oxt/icons/team-instinct.png | Bin 2753 -> 4365 bytes oxt/icons/team-mystic.png | Bin 2823 -> 4492 bytes oxt/icons/team-valor.png | Bin 3052 -> 4860 bytes 9 files changed, 867 insertions(+), 874 deletions(-) diff --git a/PokemonGoIV/0Main.vb b/PokemonGoIV/0Main.vb index de8e044..258f3b3 100644 --- a/PokemonGoIV/0Main.vb +++ b/PokemonGoIV/0Main.vb @@ -160,419 +160,8 @@ Function fnAskParam As aFindIVParam fnAskParam = aQuery End Function -' fnAskParam: Asks the users for the parameters for the Pokémon. -Function fnAskParam0 As aFindIVParam - Dim oDialog As Object, oDialogModel As Object - Dim oTextModel As Object, oListModel As Object - Dim oNumericModel As Object, oCheckBoxModel As Object - Dim oGroupModel As Object, oRadioModel As Object - Dim oButtonModel As Object, oListener As Object - Dim mListItems () As String, sTemp As String - Dim nI As Integer, nCount As Integer - Dim bIsBestAttack As Boolean, bIsBestDefense As Boolean - Dim bIsBestHP As Boolean - Dim aQuery As New aFindIVParam - - ' Creates a dialog - oDialogModel = CreateUnoService ( _ - "com.sun.star.awt.UnoControlDialogModel") - oDialogModel.setPropertyValue ("PositionX", 100) - oDialogModel.setPropertyValue ("PositionY", 100) - oDialogModel.setPropertyValue ("Height", 185) - oDialogModel.setPropertyValue ("Width", 220) - oDialogModel.setPropertyValue ("Title", "Pokémon GO IV Calculator") - - ' Adds a text label for the Pokémon list. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 6) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 30) - oTextModel.setPropertyValue ("Label", "~Pokémon:") - oDialogModel.insertByName ("txtPokemon", oTextModel) - - ' Adds the Pokémon list. - subReadBaseStats - ReDim mListItems (UBound (maBaseStats)) As String - For nI = 0 To UBound (maBaseStats) - mListItems (nI) = maBaseStats (nI).sPokemon - Next nI - oListModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel.setPropertyValue ("PositionX", 35) - oListModel.setPropertyValue ("PositionY", 4) - oListModel.setPropertyValue ("Height", 12) - oListModel.setPropertyValue ("Width", 50) - oListModel.setPropertyValue ("TabIndex", 0) - oListModel.setPropertyValue ("Dropdown", True) - oListModel.setPropertyValue ("StringItemList", mListItems) - oDialogModel.insertByName ("lstPokemon", oListModel) - - ' Adds a text label for the CP field. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 21) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 15) - oTextModel.setPropertyValue ("Label", "~CP:") - oDialogModel.insertByName ("txtCP", oTextModel) - - ' Adds the CP field. - oNumericModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlNumericFieldModel") - oNumericModel.setPropertyValue ("PositionX", 20) - oNumericModel.setPropertyValue ("PositionY", 19) - oNumericModel.setPropertyValue ("Height", 12) - oNumericModel.setPropertyValue ("Width", 20) - oNumericModel.setPropertyValue ("DecimalAccuracy", 0) - oDialogModel.insertByName ("numCP", oNumericModel) - - ' Adds a text label for the HP field. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 50) - oTextModel.setPropertyValue ("PositionY", 21) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 15) - oTextModel.setPropertyValue ("Label", "~HP:") - oDialogModel.insertByName ("txtHP", oTextModel) - - ' Adds the HP field. - oNumericModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlNumericFieldModel") - oNumericModel.setPropertyValue ("PositionX", 65) - oNumericModel.setPropertyValue ("PositionY", 19) - oNumericModel.setPropertyValue ("Height", 12) - oNumericModel.setPropertyValue ("Width", 15) - oNumericModel.setPropertyValue ("DecimalAccuracy", 0) - oDialogModel.insertByName ("numHP", oNumericModel) - - ' Adds a text label for the star dust field. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 90) - oTextModel.setPropertyValue ("PositionY", 21) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 30) - oTextModel.setPropertyValue ("Label", "S~tar dust:") - oDialogModel.insertByName ("txtStarDust", oTextModel) - - ' Adds the star dust field. - subReadStarDust - sTemp = " " - ReDim mListItems () As String - nCount = -1 - For nI = 1 To UBound (mStarDust) - If InStr (sTemp, " " & CStr (mStarDust (nI)) & " ") = 0 Then - nCount = nCount + 1 - ReDim Preserve mListItems (nCount) As String - mListItems (nCount) = CStr (mStarDust (nI)) - sTemp = sTemp & CStr (mStarDust (nI)) & " " - End If - Next nI - oListModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel.setPropertyValue ("PositionX", 120) - oListModel.setPropertyValue ("PositionY", 19) - oListModel.setPropertyValue ("Height", 12) - oListModel.setPropertyValue ("Width", 30) - oListModel.setPropertyValue ("Dropdown", True) - oListModel.setPropertyValue ("StringItemList", mListItems) - oDialogModel.insertByName ("lstStarDust", oListModel) - - ' Adds a text label for the player level field. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 160) - oTextModel.setPropertyValue ("PositionY", 21) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 35) - oTextModel.setPropertyValue ("Label", "Player ~level:") - oDialogModel.insertByName ("txtPlayerLevel", oTextModel) - - ' Adds the player level field. - ReDim mListItems (39) As String - For nI = 0 To UBound (mListItems) - mListItems (nI) = CStr (nI + 1) - Next nI - oListModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel.setPropertyValue ("PositionX", 195) - oListModel.setPropertyValue ("PositionY", 19) - oListModel.setPropertyValue ("Height", 12) - oListModel.setPropertyValue ("Width", 20) - oListModel.setPropertyValue ("Dropdown", True) - oListModel.setPropertyValue ("StringItemList", mListItems) - oDialogModel.insertByName ("lstPlayerLevel", oListModel) - - ' Adds the whether powered-up check box. - oCheckBoxModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlCheckBoxModel") - oCheckBoxModel.setPropertyValue ("PositionX", 5) - oCheckBoxModel.setPropertyValue ("PositionY", 36) - oCheckBoxModel.setPropertyValue ("Height", 8) - oCheckBoxModel.setPropertyValue ("Width", 210) - oCheckBoxModel.setPropertyValue ("Label", _ - "This Pokémon is ~newly-caught and was not powered-up yet.") - oCheckBoxModel.setPropertyValue ("State", 1) - oDialogModel.insertByName ("cbxIsNew", oCheckBoxModel) - - ' Adds a group for the appraisals - oGroupModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlGroupBoxModel") - oGroupModel.setPropertyValue ("PositionX", 5) - oGroupModel.setPropertyValue ("PositionY", 50) - oGroupModel.setPropertyValue ("Height", 110) - oGroupModel.setPropertyValue ("Width", 210) - oGroupModel.setPropertyValue ("Label", "Team Leader Apprasal") - oDialogModel.insertByName ("grpApprasals", oGroupModel) - - ' Adds a text label for the team. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 10) - oTextModel.setPropertyValue ("PositionY", 66) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 20) - oTextModel.setPropertyValue ("Label", "Team:") - oDialogModel.insertByName ("txtTeam", oTextModel) - - ' Adds the red team radio button. - oRadioModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlRadioButtonModel") - oRadioModel.setPropertyValue ("PositionX", 30) - oRadioModel.setPropertyValue ("PositionY", 66) - oRadioModel.setPropertyValue ("Height", 8) - oRadioModel.setPropertyValue ("Width", 25) - oRadioModel.setPropertyValue ("Label", "~Valor") - oRadioModel.setPropertyValue ("TextColor", RGB (255, 255, 255)) - oRadioModel.setPropertyValue ("BackgroundColor", RGB (255, 0, 0)) - oDialogModel.insertByName ("rdoTeamRed", oRadioModel) - - ' Adds the blue team radio button. - oRadioModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlRadioButtonModel") - oRadioModel.setPropertyValue ("PositionX", 60) - oRadioModel.setPropertyValue ("PositionY", 66) - oRadioModel.setPropertyValue ("Height", 8) - oRadioModel.setPropertyValue ("Width", 30) - oRadioModel.setPropertyValue ("Label", "~Mystic") - oRadioModel.setPropertyValue ("TextColor", RGB (255, 255, 255)) - oRadioModel.setPropertyValue ("BackgroundColor", RGB (0, 0, 255)) - oDialogModel.insertByName ("rdoTeamBlue", oRadioModel) - - ' Adds the yellow team radio button. - oRadioModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlRadioButtonModel") - oRadioModel.setPropertyValue ("PositionX", 95) - oRadioModel.setPropertyValue ("PositionY", 66) - oRadioModel.setPropertyValue ("Height", 8) - oRadioModel.setPropertyValue ("Width", 30) - oRadioModel.setPropertyValue ("Label", "~Instinct") - oRadioModel.setPropertyValue ("BackgroundColor", RGB (255, 255, 0)) - oDialogModel.insertByName ("rdoTeamYellow", oRadioModel) - - ' Adds the first appraisal list. - oListModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel.setPropertyValue ("PositionX", 10) - oListModel.setPropertyValue ("PositionY", 79) - oListModel.setPropertyValue ("Height", 12) - oListModel.setPropertyValue ("Width", 200) - oListModel.setPropertyValue ("Dropdown", True) - oDialogModel.insertByName ("lstApprasal1", oListModel) - - ' Adds a text label before the best stat. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 10) - oTextModel.setPropertyValue ("PositionY", 96) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 20) - oDialogModel.insertByName ("txtBestBefore", oTextModel) - - ' Adds the best stat field. - oListModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel.setPropertyValue ("PositionX", 30) - oListModel.setPropertyValue ("PositionY", 94) - oListModel.setPropertyValue ("Height", 12) - oListModel.setPropertyValue ("Width", 35) - oListModel.setPropertyValue ("Dropdown", True) - oDialogModel.insertByName ("lstBest", oListModel) - - ' Adds a text label after the best stat. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 65) - oTextModel.setPropertyValue ("PositionY", 96) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 100) - oDialogModel.insertByName ("txtBestAfter", oTextModel) - - ' Adds the second best stat check box. - oCheckBoxModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlCheckBoxModel") - oCheckBoxModel.setPropertyValue ("PositionX", 10) - oCheckBoxModel.setPropertyValue ("PositionY", 111) - oCheckBoxModel.setPropertyValue ("Height", 8) - oCheckBoxModel.setPropertyValue ("Width", 200) - oDialogModel.insertByName ("cbxBest2", oCheckBoxModel) - - ' Adds the third best stat check box. - oCheckBoxModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlCheckBoxModel") - oCheckBoxModel.setPropertyValue ("PositionX", 10) - oCheckBoxModel.setPropertyValue ("PositionY", 126) - oCheckBoxModel.setPropertyValue ("Height", 8) - oCheckBoxModel.setPropertyValue ("Width", 200) - oDialogModel.insertByName ("cbxBest3", oCheckBoxModel) - - ' Adds the second appraisal list. - oListModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel.setPropertyValue ("PositionX", 10) - oListModel.setPropertyValue ("PositionY", 139) - oListModel.setPropertyValue ("Height", 12) - oListModel.setPropertyValue ("Width", 200) - oListModel.setPropertyValue ("Dropdown", True) - oDialogModel.insertByName ("lstApprasal2", oListModel) - - ' Adds the OK button. - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 35) - oButtonModel.setPropertyValue ("PositionY", 165) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 60) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.OK) - oButtonModel.setPropertyValue ("DefaultButton", True) - oButtonModel.setPropertyValue ("Enabled", False) - oDialogModel.insertByName ("btnOK", oButtonModel) - - ' Adds the cancel button. - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 125) - oButtonModel.setPropertyValue ("PositionY", 165) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 60) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.CANCEL) - oDialogModel.insertByName ("btnCancel", oButtonModel) - - ' Adds the dialog model to the control and runs it. - oDialog = CreateUnoService ("com.sun.star.awt.UnoControlDialog") - oDialog.setModel (oDialogModel) - oDialog.setVisible (True) - oDialog.getControl ("lstPokemon").setFocus - oListener = CreateUnoListener ("subBtnOKCheck_", _ - "com.sun.star.awt.XItemListener") - oDialog.getControl ("lstPokemon").addItemListener (oListener) - oListener = CreateUnoListener ("subBtnOKCheck_", _ - "com.sun.star.awt.XTextListener") - oDialog.getControl ("numCP").addTextListener (oListener) - oListener = CreateUnoListener ("subBtnOKCheck_", _ - "com.sun.star.awt.XTextListener") - oDialog.getControl ("numHP").addTextListener (oListener) - oListener = CreateUnoListener ("subBtnOKCheck_", _ - "com.sun.star.awt.XItemListener") - oDialog.getControl ("lstStarDust").addItemListener (oListener) - oListener = CreateUnoListener ("subRdoTeamRedItemChanged_", _ - "com.sun.star.awt.XItemListener") - oDialog.getControl ("rdoTeamRed").addItemListener (oListener) - oListener = CreateUnoListener ("subRdoTeamBlueItemChanged_", _ - "com.sun.star.awt.XItemListener") - oDialog.getControl ("rdoTeamBlue").addItemListener (oListener) - oListener = CreateUnoListener ("subRdoTeamYellowItemChanged_", _ - "com.sun.star.awt.XItemListener") - oDialog.getControl ("rdoTeamYellow").addItemListener (oListener) - oListener = CreateUnoListener ("subLstBestItemChanged_", _ - "com.sun.star.awt.XItemListener") - oDialog.getControl ("lstBest").addItemListener (oListener) - oDialog.getControl ("lstApprasal1").setVisible (False) - oDialog.getControl ("txtBestBefore").setVisible (False) - oDialog.getControl ("lstBest").setVisible (False) - oDialog.getControl ("txtBestAfter").setVisible (False) - oDialog.getControl ("cbxBest2").setVisible (False) - oDialog.getControl ("cbxBest3").setVisible (False) - oDialog.getControl ("lstApprasal2").setVisible (False) - If oDialog.execute = 0 Then - aQuery.bIsCancelled = True - fnAskParam0 = aQuery - Exit Function - End If - - With aQuery - .sPokemon = oDialog.getControl ("lstPokemon").getSelectedItem - .nCP = oDialog.getControl ("numCP").getValue - .nHP = oDialog.getControl ("numHP").getValue - .nStarDust = CInt (oDialog.getControl ("lstStarDust").getSelectedItem) - .nPlayerLevel = CInt (oDialog.getControl ("lstPlayerLevel").getSelectedItem) - .nAppraisal1 = oDialog.getControl ("lstApprasal1").getSelectedItemPos + 1 - .nAppraisal2 = oDialog.getControl ("lstApprasal2").getSelectedItemPos + 1 - .bIsCancelled = False - End With - If oDialog.getControl ("cbxIsNew").getState = 1 Then - aQuery.bIsNew = True - Else - aQuery.bIsNew = False - End If - - ' The best stats - bIsBestAttack = False - bIsBestDefense = False - bIsBestHP = False - If oDialog.getControl ("lstBest").getSelectedItem = "Attack" Then - bIsBestAttack = True - If oDialog.getControl ("cbxBest2").getState = 1 Then - bIsBestDefense = True - End If - If oDialog.getControl ("cbxBest3").getState = 1 Then - bIsBestHP = True - End If - End If - If oDialog.getControl ("lstBest").getSelectedItem = "Defense" Then - bIsBestDefense = True - If oDialog.getControl ("cbxBest2").getState = 1 Then - bIsBestAttack = True - End If - If oDialog.getControl ("cbxBest3").getState = 1 Then - bIsBestHP = True - End If - End If - If oDialog.getControl ("lstBest").getSelectedItem = "HP" Then - bIsBestHP = True - If oDialog.getControl ("cbxBest2").getState = 1 Then - bIsBestAttack = True - End If - If oDialog.getControl ("cbxBest3").getState = 1 Then - bIsBestDefense = True - End If - End If - aQuery.sBest = "" - If bIsBestAttack Then - aQuery.sBest = aQuery.sBest & "Atk " - End If - If bIsBestDefense Then - aQuery.sBest = aQuery.sBest & "Def " - End If - If bIsBestHP Then - aQuery.sBest = aQuery.sBest & "Sta " - End If - - fnAskParam0 = aQuery -End Function - -' subBtnOKCheck_disposing: Dummy for the listener. -Sub subBtnOKCheck_disposing (oEvent As object) -End Sub - -' subBtnOKCheck_itemStateChanged: When the Pokémon or star dust is selected. -Sub subBtnOKCheck_itemStateChanged (oEvent As object) +' subBtnOKCheck: Checks whether Pokémon, CP, HP and star dust are all filled. +Sub subBtnOKCheck (oEvent As object) Dim oDialog As Object Dim oPokemon As Object, oCP As Object Dim oHP As Object, oStarDust As Object, oOK As Object @@ -594,6 +183,38 @@ Sub subBtnOKCheck_itemStateChanged (oEvent As object) End If End Sub +' subLstPokemonSelected: When the Pokémon is selected. +Sub subLstPokemonSelected (oEvent As object) + Dim oDialog As Object, sPokemon As String + Dim oImageModel As Object, sImageId As String + + oDialog = oEvent.Source.getContext + + sPokemon = oDialog.getControl ("lstPokemon").getSelectedItem + sImageId = "" + If sPokemon = "Farfetch'd" Then + sImageId = "PokemonFarfetchd" + End If + If sPokemon = "Nidoran♀" Then + sImageId = "PokemonNidoranFemale" + End If + If sPokemon = "Nidoran♂" Then + sImageId = "PokemonNidoranMale" + End If + If sPokemon = "Mr. Mime" Then + sImageId = "PokemonMrMime" + End If + If sImageId = "" Then + sImageId = "Pokemon" & sPokemon + End If + + oImageModel = oDialog.getControl ("imgPokemon").getModel + oImageModel.setPropertyValue ("ImageURL", _ + fnGetImageUrl (sImageId)) + + subBtnOKCheck (oEvent) +End Sub + ' subBtnOKCheck_textChanged: When the CP or HP is filled Sub subBtnOKCheck_textChanged (oEvent As object) subBtnOKCheck_itemStateChanged (oEvent) @@ -613,7 +234,7 @@ Sub subRdoTeamRedItemChanged_itemStateChanged (oEvent As object) oImageModel = oDialog.getControl ("imgTeam").getModel oImageModel.setPropertyValue ("ImageURL", _ - fnGetImageUrl ("TeamValor")) + fnGetImageUrl ("TeamValor")) mItems = Array ( _ "Overall, your [Pokémon] simply amazes me. It can accomplish anything!", _ @@ -676,7 +297,7 @@ Sub subRdoTeamBlueItemChanged_itemStateChanged (oEvent As object) oImageModel = oDialog.getControl ("imgTeam").getModel oImageModel.setPropertyValue ("ImageURL", _ - fnGetImageUrl ("TeamMystic")) + fnGetImageUrl ("TeamMystic")) mItems = Array ( _ "Overall, your [Pokémon] is a wonder! What a breathtaking Pokémon!", _ @@ -739,7 +360,7 @@ Sub subRdoTeamYellowItemChanged_itemStateChanged (oEvent As object) oImageModel = oDialog.getControl ("imgTeam").getModel oImageModel.setPropertyValue ("ImageURL", _ - fnGetImageUrl ("TeamInstinct")) + fnGetImageUrl ("TeamInstinct")) mItems = Array ( _ "Overall, your [Pokémon] looks like it can really battle with the best of them!", _ diff --git a/oxt/AddonConfiguration.xcu b/oxt/AddonConfiguration.xcu index 1488dfe..207f0a6 100644 --- a/oxt/AddonConfiguration.xcu +++ b/oxt/AddonConfiguration.xcu @@ -54,6 +54,761 @@ %origin%/icons/team-instinct.png + + + %origin%/icons/pokemons/bulbasaur-pokemon-go.png + + + + + %origin%/icons/pokemons/ivysaur-pokemon-go.png + + + + + %origin%/icons/pokemons/venusaur-pokemon-go.png + + + + + %origin%/icons/pokemons/charmander-pokemon-go.png + + + + + %origin%/icons/pokemons/charmeleon-pokemon-go.png + + + + + %origin%/icons/pokemons/charizard-pokemon-go.png + + + + + %origin%/icons/pokemons/squirtle-pokemon-go.png + + + + + %origin%/icons/pokemons/wartortle-pokemon-go.png + + + + + %origin%/icons/pokemons/blastoise-pokemon-go.png + + + + + %origin%/icons/pokemons/caterpie-pokemon-go.png + + + + + %origin%/icons/pokemons/metapod-pokemon-go.png + + + + + %origin%/icons/pokemons/butterfree-pokemon-go.png + + + + + %origin%/icons/pokemons/weedle-pokemon-go.png + + + + + %origin%/icons/pokemons/kakuna-pokemon-go.png + + + + + %origin%/icons/pokemons/beedrill-pokemon-go.png + + + + + %origin%/icons/pokemons/pidgey-pokemon-go.png + + + + + %origin%/icons/pokemons/pidgeotto-pokemon-go.png + + + + + %origin%/icons/pokemons/pidgeot-pokemon-go.png + + + + + %origin%/icons/pokemons/rattata-pokemon-go.png + + + + + %origin%/icons/pokemons/raticate-pokemon-go.png + + + + + %origin%/icons/pokemons/spearow-pokemon-go.png + + + + + %origin%/icons/pokemons/fearow-pokemon-go.png + + + + + %origin%/icons/pokemons/ekans-pokemon-go.png + + + + + %origin%/icons/pokemons/arbok-pokemon-go.png + + + + + %origin%/icons/pokemons/pikachu-pokemon-go.png + + + + + %origin%/icons/pokemons/raichu-pokemon-go.png + + + + + %origin%/icons/pokemons/sandshrew-pokemon-go.png + + + + + %origin%/icons/pokemons/sandslash-pokemon-go.png + + + + + %origin%/icons/pokemons/nidoran-female-pokemon-go.png + + + + + %origin%/icons/pokemons/nidorina-pokemon-go.png + + + + + %origin%/icons/pokemons/nidoqueen-pokemon-go.png + + + + + %origin%/icons/pokemons/nidoran-male-pokemon-go.png + + + + + %origin%/icons/pokemons/nidorino-pokemon-go.png + + + + + %origin%/icons/pokemons/nidoking-pokemon-go.png + + + + + %origin%/icons/pokemons/clefairy-pokemon-go.png + + + + + %origin%/icons/pokemons/clefable-pokemon-go.png + + + + + %origin%/icons/pokemons/vulpix-pokemon-go.png + + + + + %origin%/icons/pokemons/ninetales-pokemon-go.png + + + + + %origin%/icons/pokemons/jigglypuff-pokemon-go.png + + + + + %origin%/icons/pokemons/wigglytuff-pokemon-go.png + + + + + %origin%/icons/pokemons/zubat-pokemon-go.png + + + + + %origin%/icons/pokemons/golbat-pokemon-go.png + + + + + %origin%/icons/pokemons/oddish-pokemon-go.png + + + + + %origin%/icons/pokemons/gloom-pokemon-go.png + + + + + %origin%/icons/pokemons/vileplume-pokemon-go.png + + + + + %origin%/icons/pokemons/paras-pokemon-go.png + + + + + %origin%/icons/pokemons/parasect-pokemon-go.png + + + + + %origin%/icons/pokemons/venonat-pokemon-go.png + + + + + %origin%/icons/pokemons/venomoth-pokemon-go.png + + + + + %origin%/icons/pokemons/diglett-pokemon-go.png + + + + + %origin%/icons/pokemons/dugtrio-pokemon-go.png + + + + + %origin%/icons/pokemons/meowth-pokemon-go.png + + + + + %origin%/icons/pokemons/persian-pokemon-go.png + + + + + %origin%/icons/pokemons/psyduck-pokemon-go.png + + + + + %origin%/icons/pokemons/golduck-pokemon-go.png + + + + + %origin%/icons/pokemons/mankey-pokemon-go.png + + + + + %origin%/icons/pokemons/primeape-pokemon-go.png + + + + + %origin%/icons/pokemons/growlithe-pokemon-go.png + + + + + %origin%/icons/pokemons/arcanine-pokemon-go.png + + + + + %origin%/icons/pokemons/poliwag-pokemon-go.png + + + + + %origin%/icons/pokemons/poliwhirl-pokemon-go.png + + + + + %origin%/icons/pokemons/poliwrath-pokemon-go.png + + + + + %origin%/icons/pokemons/abra-pokemon-go.png + + + + + %origin%/icons/pokemons/kadabra-pokemon-go.png + + + + + %origin%/icons/pokemons/alakazam-pokemon-go.png + + + + + %origin%/icons/pokemons/machop-pokemon-go.png + + + + + %origin%/icons/pokemons/machoke-pokemon-go.png + + + + + %origin%/icons/pokemons/machamp-pokemon-go.png + + + + + %origin%/icons/pokemons/bellsprout-pokemon-go.png + + + + + %origin%/icons/pokemons/weepinbell-pokemon-go.png + + + + + %origin%/icons/pokemons/victreebel-pokemon-go.png + + + + + %origin%/icons/pokemons/tentacool-pokemon-go.png + + + + + %origin%/icons/pokemons/tentacruel-pokemon-go.png + + + + + %origin%/icons/pokemons/geodude-pokemon-go.png + + + + + %origin%/icons/pokemons/graveler-pokemon-go.png + + + + + %origin%/icons/pokemons/golem-pokemon-go.png + + + + + %origin%/icons/pokemons/ponyta-pokemon-go.png + + + + + %origin%/icons/pokemons/rapidash-pokemon-go.png + + + + + %origin%/icons/pokemons/slowpoke-pokemon-go.png + + + + + %origin%/icons/pokemons/slowbro-pokemon-go.png + + + + + %origin%/icons/pokemons/magnemite-pokemon-go.png + + + + + %origin%/icons/pokemons/magneton-pokemon-go.png + + + + + %origin%/icons/pokemons/farfetchd-pokemon-go.png + + + + + %origin%/icons/pokemons/doduo-pokemon-go.png + + + + + %origin%/icons/pokemons/dodrio-pokemon-go.png + + + + + %origin%/icons/pokemons/seel-pokemon-go.png + + + + + %origin%/icons/pokemons/dewgong-pokemon-go.png + + + + + %origin%/icons/pokemons/grimer-pokemon-go.png + + + + + %origin%/icons/pokemons/muk-pokemon-go.png + + + + + %origin%/icons/pokemons/shellder-pokemon-go.png + + + + + %origin%/icons/pokemons/cloyster-pokemon-go.png + + + + + %origin%/icons/pokemons/gastly-pokemon-go.png + + + + + %origin%/icons/pokemons/haunter-pokemon-go.png + + + + + %origin%/icons/pokemons/gengar-pokemon-go.png + + + + + %origin%/icons/pokemons/onix-pokemon-go.png + + + + + %origin%/icons/pokemons/drowzee-pokemon-go.png + + + + + %origin%/icons/pokemons/hypno-pokemon-go.png + + + + + %origin%/icons/pokemons/krabby-pokemon-go.png + + + + + %origin%/icons/pokemons/kingler-pokemon-go.png + + + + + %origin%/icons/pokemons/voltorb-pokemon-go.png + + + + + %origin%/icons/pokemons/electrode-pokemon-go.png + + + + + %origin%/icons/pokemons/exeggcute-pokemon-go.png + + + + + %origin%/icons/pokemons/exeggutor-pokemon-go.png + + + + + %origin%/icons/pokemons/cubone-pokemon-go.png + + + + + %origin%/icons/pokemons/marowak-pokemon-go.png + + + + + %origin%/icons/pokemons/hitmonlee-pokemon-go.png + + + + + %origin%/icons/pokemons/hitmonchan-pokemon-go.png + + + + + %origin%/icons/pokemons/lickitung-pokemon-go.png + + + + + %origin%/icons/pokemons/koffing-pokemon-go.png + + + + + %origin%/icons/pokemons/weezing-pokemon-go.png + + + + + %origin%/icons/pokemons/rhyhorn-pokemon-go.png + + + + + %origin%/icons/pokemons/rhydon-pokemon-go.png + + + + + %origin%/icons/pokemons/chansey-pokemon-go.png + + + + + %origin%/icons/pokemons/tangela-pokemon-go.png + + + + + %origin%/icons/pokemons/kangaskhan-pokemon-go.png + + + + + %origin%/icons/pokemons/horsea-pokemon-go.png + + + + + %origin%/icons/pokemons/seadra-pokemon-go.png + + + + + %origin%/icons/pokemons/goldeen-pokemon-go.png + + + + + %origin%/icons/pokemons/seaking-pokemon-go.png + + + + + %origin%/icons/pokemons/staryu-pokemon-go.png + + + + + %origin%/icons/pokemons/starmie-pokemon-go.png + + + + + %origin%/icons/pokemons/mr-mime-pokemon-go.png + + + + + %origin%/icons/pokemons/scyther-pokemon-go.png + + + + + %origin%/icons/pokemons/jynx-pokemon-go.png + + + + + %origin%/icons/pokemons/electabuzz-pokemon-go.png + + + + + %origin%/icons/pokemons/magmar-pokemon-go.png + + + + + %origin%/icons/pokemons/pinsir-pokemon-go.png + + + + + %origin%/icons/pokemons/tauros-pokemon-go.png + + + + + %origin%/icons/pokemons/magikarp-pokemon-go.png + + + + + %origin%/icons/pokemons/gyarados-pokemon-go.png + + + + + %origin%/icons/pokemons/lapras-pokemon-go.png + + + + + %origin%/icons/pokemons/ditto-pokemon-go.png + + + + + %origin%/icons/pokemons/eevee-pokemon-go.png + + + + + %origin%/icons/pokemons/vaporeon-pokemon-go.png + + + + + %origin%/icons/pokemons/jolteon-pokemon-go.png + + + + + %origin%/icons/pokemons/flareon-pokemon-go.png + + + + + %origin%/icons/pokemons/porygon-pokemon-go.png + + + + + %origin%/icons/pokemons/omanyte-pokemon-go.png + + + + + %origin%/icons/pokemons/omastar-pokemon-go.png + + + + + %origin%/icons/pokemons/kabuto-pokemon-go.png + + + + + %origin%/icons/pokemons/kabutops-pokemon-go.png + + + + + %origin%/icons/pokemons/aerodactyl-pokemon-go.png + + + + + %origin%/icons/pokemons/snorlax-pokemon-go.png + + + + + %origin%/icons/pokemons/articuno-pokemon-go.png + + + + + %origin%/icons/pokemons/zapdos-pokemon-go.png + + + + + %origin%/icons/pokemons/moltres-pokemon-go.png + + + + + %origin%/icons/pokemons/dratini-pokemon-go.png + + + + + %origin%/icons/pokemons/dragonair-pokemon-go.png + + + + + %origin%/icons/pokemons/dragonite-pokemon-go.png + + + + + %origin%/icons/pokemons/mewtwo-pokemon-go.png + + + + + %origin%/icons/pokemons/mew-pokemon-go.png + + diff --git a/oxt/PokemonGoIV/0Main.xba b/oxt/PokemonGoIV/0Main.xba index a7f17d6..d9b7e0b 100644 --- a/oxt/PokemonGoIV/0Main.xba +++ b/oxt/PokemonGoIV/0Main.xba @@ -162,419 +162,8 @@ Function fnAskParam As aFindIVParam fnAskParam = aQuery End Function -' fnAskParam: Asks the users for the parameters for the Pokémon. -Function fnAskParam0 As aFindIVParam - Dim oDialog As Object, oDialogModel As Object - Dim oTextModel As Object, oListModel As Object - Dim oNumericModel As Object, oCheckBoxModel As Object - Dim oGroupModel As Object, oRadioModel As Object - Dim oButtonModel As Object, oListener As Object - Dim mListItems () As String, sTemp As String - Dim nI As Integer, nCount As Integer - Dim bIsBestAttack As Boolean, bIsBestDefense As Boolean - Dim bIsBestHP As Boolean - Dim aQuery As New aFindIVParam - - ' Creates a dialog - oDialogModel = CreateUnoService ( _ - "com.sun.star.awt.UnoControlDialogModel") - oDialogModel.setPropertyValue ("PositionX", 100) - oDialogModel.setPropertyValue ("PositionY", 100) - oDialogModel.setPropertyValue ("Height", 185) - oDialogModel.setPropertyValue ("Width", 220) - oDialogModel.setPropertyValue ("Title", "Pokémon GO IV Calculator") - - ' Adds a text label for the Pokémon list. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 6) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 30) - oTextModel.setPropertyValue ("Label", "~Pokémon:") - oDialogModel.insertByName ("txtPokemon", oTextModel) - - ' Adds the Pokémon list. - subReadBaseStats - ReDim mListItems (UBound (maBaseStats)) As String - For nI = 0 To UBound (maBaseStats) - mListItems (nI) = maBaseStats (nI).sPokemon - Next nI - oListModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel.setPropertyValue ("PositionX", 35) - oListModel.setPropertyValue ("PositionY", 4) - oListModel.setPropertyValue ("Height", 12) - oListModel.setPropertyValue ("Width", 50) - oListModel.setPropertyValue ("TabIndex", 0) - oListModel.setPropertyValue ("Dropdown", True) - oListModel.setPropertyValue ("StringItemList", mListItems) - oDialogModel.insertByName ("lstPokemon", oListModel) - - ' Adds a text label for the CP field. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 5) - oTextModel.setPropertyValue ("PositionY", 21) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 15) - oTextModel.setPropertyValue ("Label", "~CP:") - oDialogModel.insertByName ("txtCP", oTextModel) - - ' Adds the CP field. - oNumericModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlNumericFieldModel") - oNumericModel.setPropertyValue ("PositionX", 20) - oNumericModel.setPropertyValue ("PositionY", 19) - oNumericModel.setPropertyValue ("Height", 12) - oNumericModel.setPropertyValue ("Width", 20) - oNumericModel.setPropertyValue ("DecimalAccuracy", 0) - oDialogModel.insertByName ("numCP", oNumericModel) - - ' Adds a text label for the HP field. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 50) - oTextModel.setPropertyValue ("PositionY", 21) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 15) - oTextModel.setPropertyValue ("Label", "~HP:") - oDialogModel.insertByName ("txtHP", oTextModel) - - ' Adds the HP field. - oNumericModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlNumericFieldModel") - oNumericModel.setPropertyValue ("PositionX", 65) - oNumericModel.setPropertyValue ("PositionY", 19) - oNumericModel.setPropertyValue ("Height", 12) - oNumericModel.setPropertyValue ("Width", 15) - oNumericModel.setPropertyValue ("DecimalAccuracy", 0) - oDialogModel.insertByName ("numHP", oNumericModel) - - ' Adds a text label for the star dust field. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 90) - oTextModel.setPropertyValue ("PositionY", 21) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 30) - oTextModel.setPropertyValue ("Label", "S~tar dust:") - oDialogModel.insertByName ("txtStarDust", oTextModel) - - ' Adds the star dust field. - subReadStarDust - sTemp = " " - ReDim mListItems () As String - nCount = -1 - For nI = 1 To UBound (mStarDust) - If InStr (sTemp, " " & CStr (mStarDust (nI)) & " ") = 0 Then - nCount = nCount + 1 - ReDim Preserve mListItems (nCount) As String - mListItems (nCount) = CStr (mStarDust (nI)) - sTemp = sTemp & CStr (mStarDust (nI)) & " " - End If - Next nI - oListModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel.setPropertyValue ("PositionX", 120) - oListModel.setPropertyValue ("PositionY", 19) - oListModel.setPropertyValue ("Height", 12) - oListModel.setPropertyValue ("Width", 30) - oListModel.setPropertyValue ("Dropdown", True) - oListModel.setPropertyValue ("StringItemList", mListItems) - oDialogModel.insertByName ("lstStarDust", oListModel) - - ' Adds a text label for the player level field. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 160) - oTextModel.setPropertyValue ("PositionY", 21) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 35) - oTextModel.setPropertyValue ("Label", "Player ~level:") - oDialogModel.insertByName ("txtPlayerLevel", oTextModel) - - ' Adds the player level field. - ReDim mListItems (39) As String - For nI = 0 To UBound (mListItems) - mListItems (nI) = CStr (nI + 1) - Next nI - oListModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel.setPropertyValue ("PositionX", 195) - oListModel.setPropertyValue ("PositionY", 19) - oListModel.setPropertyValue ("Height", 12) - oListModel.setPropertyValue ("Width", 20) - oListModel.setPropertyValue ("Dropdown", True) - oListModel.setPropertyValue ("StringItemList", mListItems) - oDialogModel.insertByName ("lstPlayerLevel", oListModel) - - ' Adds the whether powered-up check box. - oCheckBoxModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlCheckBoxModel") - oCheckBoxModel.setPropertyValue ("PositionX", 5) - oCheckBoxModel.setPropertyValue ("PositionY", 36) - oCheckBoxModel.setPropertyValue ("Height", 8) - oCheckBoxModel.setPropertyValue ("Width", 210) - oCheckBoxModel.setPropertyValue ("Label", _ - "This Pokémon is ~newly-caught and was not powered-up yet.") - oCheckBoxModel.setPropertyValue ("State", 1) - oDialogModel.insertByName ("cbxIsNew", oCheckBoxModel) - - ' Adds a group for the appraisals - oGroupModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlGroupBoxModel") - oGroupModel.setPropertyValue ("PositionX", 5) - oGroupModel.setPropertyValue ("PositionY", 50) - oGroupModel.setPropertyValue ("Height", 110) - oGroupModel.setPropertyValue ("Width", 210) - oGroupModel.setPropertyValue ("Label", "Team Leader Apprasal") - oDialogModel.insertByName ("grpApprasals", oGroupModel) - - ' Adds a text label for the team. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 10) - oTextModel.setPropertyValue ("PositionY", 66) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 20) - oTextModel.setPropertyValue ("Label", "Team:") - oDialogModel.insertByName ("txtTeam", oTextModel) - - ' Adds the red team radio button. - oRadioModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlRadioButtonModel") - oRadioModel.setPropertyValue ("PositionX", 30) - oRadioModel.setPropertyValue ("PositionY", 66) - oRadioModel.setPropertyValue ("Height", 8) - oRadioModel.setPropertyValue ("Width", 25) - oRadioModel.setPropertyValue ("Label", "~Valor") - oRadioModel.setPropertyValue ("TextColor", RGB (255, 255, 255)) - oRadioModel.setPropertyValue ("BackgroundColor", RGB (255, 0, 0)) - oDialogModel.insertByName ("rdoTeamRed", oRadioModel) - - ' Adds the blue team radio button. - oRadioModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlRadioButtonModel") - oRadioModel.setPropertyValue ("PositionX", 60) - oRadioModel.setPropertyValue ("PositionY", 66) - oRadioModel.setPropertyValue ("Height", 8) - oRadioModel.setPropertyValue ("Width", 30) - oRadioModel.setPropertyValue ("Label", "~Mystic") - oRadioModel.setPropertyValue ("TextColor", RGB (255, 255, 255)) - oRadioModel.setPropertyValue ("BackgroundColor", RGB (0, 0, 255)) - oDialogModel.insertByName ("rdoTeamBlue", oRadioModel) - - ' Adds the yellow team radio button. - oRadioModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlRadioButtonModel") - oRadioModel.setPropertyValue ("PositionX", 95) - oRadioModel.setPropertyValue ("PositionY", 66) - oRadioModel.setPropertyValue ("Height", 8) - oRadioModel.setPropertyValue ("Width", 30) - oRadioModel.setPropertyValue ("Label", "~Instinct") - oRadioModel.setPropertyValue ("BackgroundColor", RGB (255, 255, 0)) - oDialogModel.insertByName ("rdoTeamYellow", oRadioModel) - - ' Adds the first appraisal list. - oListModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel.setPropertyValue ("PositionX", 10) - oListModel.setPropertyValue ("PositionY", 79) - oListModel.setPropertyValue ("Height", 12) - oListModel.setPropertyValue ("Width", 200) - oListModel.setPropertyValue ("Dropdown", True) - oDialogModel.insertByName ("lstApprasal1", oListModel) - - ' Adds a text label before the best stat. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 10) - oTextModel.setPropertyValue ("PositionY", 96) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 20) - oDialogModel.insertByName ("txtBestBefore", oTextModel) - - ' Adds the best stat field. - oListModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel.setPropertyValue ("PositionX", 30) - oListModel.setPropertyValue ("PositionY", 94) - oListModel.setPropertyValue ("Height", 12) - oListModel.setPropertyValue ("Width", 35) - oListModel.setPropertyValue ("Dropdown", True) - oDialogModel.insertByName ("lstBest", oListModel) - - ' Adds a text label after the best stat. - oTextModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlFixedTextModel") - oTextModel.setPropertyValue ("PositionX", 65) - oTextModel.setPropertyValue ("PositionY", 96) - oTextModel.setPropertyValue ("Height", 8) - oTextModel.setPropertyValue ("Width", 100) - oDialogModel.insertByName ("txtBestAfter", oTextModel) - - ' Adds the second best stat check box. - oCheckBoxModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlCheckBoxModel") - oCheckBoxModel.setPropertyValue ("PositionX", 10) - oCheckBoxModel.setPropertyValue ("PositionY", 111) - oCheckBoxModel.setPropertyValue ("Height", 8) - oCheckBoxModel.setPropertyValue ("Width", 200) - oDialogModel.insertByName ("cbxBest2", oCheckBoxModel) - - ' Adds the third best stat check box. - oCheckBoxModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlCheckBoxModel") - oCheckBoxModel.setPropertyValue ("PositionX", 10) - oCheckBoxModel.setPropertyValue ("PositionY", 126) - oCheckBoxModel.setPropertyValue ("Height", 8) - oCheckBoxModel.setPropertyValue ("Width", 200) - oDialogModel.insertByName ("cbxBest3", oCheckBoxModel) - - ' Adds the second appraisal list. - oListModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlListBoxModel") - oListModel.setPropertyValue ("PositionX", 10) - oListModel.setPropertyValue ("PositionY", 139) - oListModel.setPropertyValue ("Height", 12) - oListModel.setPropertyValue ("Width", 200) - oListModel.setPropertyValue ("Dropdown", True) - oDialogModel.insertByName ("lstApprasal2", oListModel) - - ' Adds the OK button. - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 35) - oButtonModel.setPropertyValue ("PositionY", 165) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 60) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.OK) - oButtonModel.setPropertyValue ("DefaultButton", True) - oButtonModel.setPropertyValue ("Enabled", False) - oDialogModel.insertByName ("btnOK", oButtonModel) - - ' Adds the cancel button. - oButtonModel = oDialogModel.createInstance ( _ - "com.sun.star.awt.UnoControlButtonModel") - oButtonModel.setPropertyValue ("PositionX", 125) - oButtonModel.setPropertyValue ("PositionY", 165) - oButtonModel.setPropertyValue ("Height", 15) - oButtonModel.setPropertyValue ("Width", 60) - oButtonModel.setPropertyValue ("PushButtonType", _ - com.sun.star.awt.PushButtonType.CANCEL) - oDialogModel.insertByName ("btnCancel", oButtonModel) - - ' Adds the dialog model to the control and runs it. - oDialog = CreateUnoService ("com.sun.star.awt.UnoControlDialog") - oDialog.setModel (oDialogModel) - oDialog.setVisible (True) - oDialog.getControl ("lstPokemon").setFocus - oListener = CreateUnoListener ("subBtnOKCheck_", _ - "com.sun.star.awt.XItemListener") - oDialog.getControl ("lstPokemon").addItemListener (oListener) - oListener = CreateUnoListener ("subBtnOKCheck_", _ - "com.sun.star.awt.XTextListener") - oDialog.getControl ("numCP").addTextListener (oListener) - oListener = CreateUnoListener ("subBtnOKCheck_", _ - "com.sun.star.awt.XTextListener") - oDialog.getControl ("numHP").addTextListener (oListener) - oListener = CreateUnoListener ("subBtnOKCheck_", _ - "com.sun.star.awt.XItemListener") - oDialog.getControl ("lstStarDust").addItemListener (oListener) - oListener = CreateUnoListener ("subRdoTeamRedItemChanged_", _ - "com.sun.star.awt.XItemListener") - oDialog.getControl ("rdoTeamRed").addItemListener (oListener) - oListener = CreateUnoListener ("subRdoTeamBlueItemChanged_", _ - "com.sun.star.awt.XItemListener") - oDialog.getControl ("rdoTeamBlue").addItemListener (oListener) - oListener = CreateUnoListener ("subRdoTeamYellowItemChanged_", _ - "com.sun.star.awt.XItemListener") - oDialog.getControl ("rdoTeamYellow").addItemListener (oListener) - oListener = CreateUnoListener ("subLstBestItemChanged_", _ - "com.sun.star.awt.XItemListener") - oDialog.getControl ("lstBest").addItemListener (oListener) - oDialog.getControl ("lstApprasal1").setVisible (False) - oDialog.getControl ("txtBestBefore").setVisible (False) - oDialog.getControl ("lstBest").setVisible (False) - oDialog.getControl ("txtBestAfter").setVisible (False) - oDialog.getControl ("cbxBest2").setVisible (False) - oDialog.getControl ("cbxBest3").setVisible (False) - oDialog.getControl ("lstApprasal2").setVisible (False) - If oDialog.execute = 0 Then - aQuery.bIsCancelled = True - fnAskParam0 = aQuery - Exit Function - End If - - With aQuery - .sPokemon = oDialog.getControl ("lstPokemon").getSelectedItem - .nCP = oDialog.getControl ("numCP").getValue - .nHP = oDialog.getControl ("numHP").getValue - .nStarDust = CInt (oDialog.getControl ("lstStarDust").getSelectedItem) - .nPlayerLevel = CInt (oDialog.getControl ("lstPlayerLevel").getSelectedItem) - .nAppraisal1 = oDialog.getControl ("lstApprasal1").getSelectedItemPos + 1 - .nAppraisal2 = oDialog.getControl ("lstApprasal2").getSelectedItemPos + 1 - .bIsCancelled = False - End With - If oDialog.getControl ("cbxIsNew").getState = 1 Then - aQuery.bIsNew = True - Else - aQuery.bIsNew = False - End If - - ' The best stats - bIsBestAttack = False - bIsBestDefense = False - bIsBestHP = False - If oDialog.getControl ("lstBest").getSelectedItem = "Attack" Then - bIsBestAttack = True - If oDialog.getControl ("cbxBest2").getState = 1 Then - bIsBestDefense = True - End If - If oDialog.getControl ("cbxBest3").getState = 1 Then - bIsBestHP = True - End If - End If - If oDialog.getControl ("lstBest").getSelectedItem = "Defense" Then - bIsBestDefense = True - If oDialog.getControl ("cbxBest2").getState = 1 Then - bIsBestAttack = True - End If - If oDialog.getControl ("cbxBest3").getState = 1 Then - bIsBestHP = True - End If - End If - If oDialog.getControl ("lstBest").getSelectedItem = "HP" Then - bIsBestHP = True - If oDialog.getControl ("cbxBest2").getState = 1 Then - bIsBestAttack = True - End If - If oDialog.getControl ("cbxBest3").getState = 1 Then - bIsBestDefense = True - End If - End If - aQuery.sBest = "" - If bIsBestAttack Then - aQuery.sBest = aQuery.sBest & "Atk " - End If - If bIsBestDefense Then - aQuery.sBest = aQuery.sBest & "Def " - End If - If bIsBestHP Then - aQuery.sBest = aQuery.sBest & "Sta " - End If - - fnAskParam0 = aQuery -End Function - -' subBtnOKCheck_disposing: Dummy for the listener. -Sub subBtnOKCheck_disposing (oEvent As object) -End Sub - -' subBtnOKCheck_itemStateChanged: When the Pokémon or star dust is selected. -Sub subBtnOKCheck_itemStateChanged (oEvent As object) +' subBtnOKCheck: Checks whether Pokémon, CP, HP and star dust are all filled. +Sub subBtnOKCheck (oEvent As object) Dim oDialog As Object Dim oPokemon As Object, oCP As Object Dim oHP As Object, oStarDust As Object, oOK As Object @@ -596,6 +185,38 @@ Sub subBtnOKCheck_itemStateChanged (oEvent As object) End If End Sub +' subLstPokemonSelected: When the Pokémon is selected. +Sub subLstPokemonSelected (oEvent As object) + Dim oDialog As Object, sPokemon As String + Dim oImageModel As Object, sImageId As String + + oDialog = oEvent.Source.getContext + + sPokemon = oDialog.getControl ("lstPokemon").getSelectedItem + sImageId = "" + If sPokemon = "Farfetch'd" Then + sImageId = "PokemonFarfetchd" + End If + If sPokemon = "Nidoran♀" Then + sImageId = "PokemonNidoranFemale" + End If + If sPokemon = "Nidoran♂" Then + sImageId = "PokemonNidoranMale" + End If + If sPokemon = "Mr. Mime" Then + sImageId = "PokemonMrMime" + End If + If sImageId = "" Then + sImageId = "Pokemon" & sPokemon + End If + + oImageModel = oDialog.getControl ("imgPokemon").getModel + oImageModel.setPropertyValue ("ImageURL", _ + fnGetImageUrl (sImageId)) + + subBtnOKCheck (oEvent) +End Sub + ' subBtnOKCheck_textChanged: When the CP or HP is filled Sub subBtnOKCheck_textChanged (oEvent As object) subBtnOKCheck_itemStateChanged (oEvent) @@ -615,7 +236,7 @@ Sub subRdoTeamRedItemChanged_itemStateChanged (oEvent As object) oImageModel = oDialog.getControl ("imgTeam").getModel oImageModel.setPropertyValue ("ImageURL", _ - fnGetImageUrl ("TeamValor")) + fnGetImageUrl ("TeamValor")) mItems = Array ( _ "Overall, your [Pokémon] simply amazes me. It can accomplish anything!", _ @@ -678,7 +299,7 @@ Sub subRdoTeamBlueItemChanged_itemStateChanged (oEvent As object) oImageModel = oDialog.getControl ("imgTeam").getModel oImageModel.setPropertyValue ("ImageURL", _ - fnGetImageUrl ("TeamMystic")) + fnGetImageUrl ("TeamMystic")) mItems = Array ( _ "Overall, your [Pokémon] is a wonder! What a breathtaking Pokémon!", _ @@ -741,7 +362,7 @@ Sub subRdoTeamYellowItemChanged_itemStateChanged (oEvent As object) oImageModel = oDialog.getControl ("imgTeam").getModel oImageModel.setPropertyValue ("ImageURL", _ - fnGetImageUrl ("TeamInstinct")) + fnGetImageUrl ("TeamInstinct")) mItems = Array ( _ "Overall, your [Pokémon] looks like it can really battle with the best of them!", _ diff --git a/oxt/PokemonGoIV/DialogStrings_en_US.properties b/oxt/PokemonGoIV/DialogStrings_en_US.properties index 2820e17..fb69cda 100644 --- a/oxt/PokemonGoIV/DialogStrings_en_US.properties +++ b/oxt/PokemonGoIV/DialogStrings_en_US.properties @@ -1,8 +1,8 @@ # Strings for Dialog Library PokemonGoIV 2.DlgMain.HelpText= -3.DlgMain.Title=Pok\u00e9mon GO IV Calculator +3.DlgMain.Title=Pok\u00c3\u00a9mon GO IV Calculator 22.DlgMain.txtPokemon.HelpText= -23.DlgMain.txtPokemon.Label=~Pok\u00e9mon: +23.DlgMain.txtPokemon.Label=~Pok\u00c3\u00a9mon: 26.DlgMain.txtCP.HelpText= 27.DlgMain.txtCP.Label=~CP: 28.DlgMain.numCP.HelpText= @@ -14,7 +14,7 @@ 40.DlgMain.txtPlayerLevel.HelpText= 41.DlgMain.txtPlayerLevel.Label=Player ~level: 46.DlgMain.cbxIsNew.HelpText= -47.DlgMain.cbxIsNew.Label=This Pok\u00e9mon has not been powered-up yet. +47.DlgMain.cbxIsNew.Label=This Pok\u00c3\u00a9mon is ~newly-caught and was not powered-up yet. 50.DlgMain.grpApprasals.HelpText= 51.DlgMain.grpApprasals.Label=Team Leader Apprasal 85.DlgMain.btnOK.HelpText= @@ -39,5 +39,3 @@ 195.DlgMain.txtBestAfter.HelpText= 201.DlgMain.cbxBest2.HelpText= 203.DlgMain.cbxBest3.HelpText= -205.DlgMain.imgTeam.HelpText= -207.DlgMain.imgTeam.HelpText= diff --git a/oxt/PokemonGoIV/DialogStrings_zh_TW.properties b/oxt/PokemonGoIV/DialogStrings_zh_TW.properties index a420a33..4820686 100644 --- a/oxt/PokemonGoIV/DialogStrings_zh_TW.properties +++ b/oxt/PokemonGoIV/DialogStrings_zh_TW.properties @@ -14,7 +14,7 @@ 40.DlgMain.txtPlayerLevel.HelpText= 41.DlgMain.txtPlayerLevel.Label=\u73a9\u5bb6\u7b49\u7d1a(~L)\uff1a 46.DlgMain.cbxIsNew.HelpText= -47.DlgMain.cbxIsNew.Label=\u9019\u96bb\u5bf6\u53ef\u5922\u9084\u6c92\u5f37\u5316\u904e(~N)\u3002 +47.DlgMain.cbxIsNew.Label=\u6211\u525b\u6293\u5230\u9019\u96bb\u5bf6\u53ef\u5922\uff0c\u9084\u6c92\u5f37\u5316\u904e(~N)\u3002 50.DlgMain.grpApprasals.HelpText= 51.DlgMain.grpApprasals.Label=\u968a\u9577\u8a55\u50f9 85.DlgMain.btnOK.HelpText= @@ -39,5 +39,3 @@ 195.DlgMain.txtBestAfter.HelpText= 201.DlgMain.cbxBest2.HelpText= 203.DlgMain.cbxBest3.HelpText= -205.DlgMain.imgTeam.HelpText= -207.DlgMain.imgTeam.HelpText= diff --git a/oxt/PokemonGoIV/DlgMain.xdl b/oxt/PokemonGoIV/DlgMain.xdl index 2c6439d..3eba39f 100644 --- a/oxt/PokemonGoIV/DlgMain.xdl +++ b/oxt/PokemonGoIV/DlgMain.xdl @@ -1,6 +1,6 @@ - + @@ -8,8 +8,8 @@ - - + + @@ -132,8 +132,7 @@ - - + @@ -164,18 +163,18 @@ - + - - - + + + - - - + + + - - + + @@ -198,10 +197,10 @@ - + - - + + @@ -245,33 +244,34 @@ - - + + - + - + - + - + - - - - + + + + - - - - - - + + + + + + + - \ No newline at end of file + diff --git a/oxt/icons/team-instinct.png b/oxt/icons/team-instinct.png index 20e24e5f5ca0fd8c204d0d93ef056ab90f42543b..2d9fd611722f6d5baab64ab887d68c731cb4f98d 100644 GIT binary patch literal 4365 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 Hu0mjfd?ti& literal 2753 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 Z{{tk|3^(TeOHcp+002ovPDHLkV1n6?hZq0= diff --git a/oxt/icons/team-valor.png b/oxt/icons/team-valor.png index f7ef094bb47852f430014c1903f542253c5de1bc..0319e9211d7f61a854b1a57893f5bf6f3e9d560e 100644 GIT binary patch literal 4860 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 iG|roJ0^xlE@P7deFFf#8X*qZR0000U919 literal 3052 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 uR(hv_l@c}LTW^T0xBBhv{1K=e*#7|(*&