• 1
  • 16
  • 17
  • 18
  • 19
  • 20(current)
TheCocktailDB.com - An Open Cocktail Database with API
made this font end gui using powershell for fun/demo purposes.


powershell:
#----------------------------------------------
#region Import the Assemblies
#----------------------------------------------
[void][reflection.assembly]::Load('System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a')
[void][reflection.assembly]::Load('System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089')
#endregion Import Assemblies

#----------------------------------------------
#region Form Objects
#----------------------------------------------
[System.Windows.Forms.Application]::EnableVisualStyles()
$FormMain = New-Object 'System.Windows.Forms.Form'
$panel3 = New-Object 'System.Windows.Forms.Panel'
$richtextboxOutput = New-Object 'System.Windows.Forms.RichTextBox'
$pbDrinkPic = New-Object 'System.Windows.Forms.PictureBox'
$panel2 = New-Object 'System.Windows.Forms.Panel'
$dgvDrinksList = New-Object 'System.Windows.Forms.DataGridView'
$panelTop = New-Object 'System.Windows.Forms.Panel'
$pbLogo = New-Object 'System.Windows.Forms.PictureBox'
$panel4 = New-Object 'System.Windows.Forms.Panel'
$labelSearch = New-Object 'System.Windows.Forms.Label'
$tbSearch = New-Object 'System.Windows.Forms.TextBox'
$InitialFormWindowState = New-Object 'System.Windows.Forms.FormWindowState'
#endregion Form Objects

#----------------------------------------------
#Main
#----------------------------------------------

$FormMain_Load={
#get drinks data
$alphabet = @('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z')
$allDrinks = @()
foreach ($letter in $alphabet)
{
$result = Invoke-RestMethod -Method GET -Uri "www.thecocktaildb.com/api/json/v1/1/search.php?f=$letter" -ContentType "application/json"
$allDrinks += $result.drinks
}
$global:drinksList = $allDrinks

#setup datagrid columns
$dgvDrinksList.Rows.Clear()
$dgvDrinksList.ColumnCount = 36;
$dgvDrinksList.Columns[0].Name = "Drink"
$dgvDrinksList.Columns[1].Name = "Category"
$dgvDrinksList.Columns[2].Name = "Alcoholic"
$dgvDrinksList.Columns[3].Name = "Glass"
$dgvDrinksList.Columns[4].Name = "Instructions"
$dgvDrinksList.Columns[5].Name = "Ingredient1"
$dgvDrinksList.Columns[6].Name = "Ingredient2"
$dgvDrinksList.Columns[7].Name = "Ingredient3"
$dgvDrinksList.Columns[8].Name = "Ingredient4"
$dgvDrinksList.Columns[9].Name = "Ingredient5"
$dgvDrinksList.Columns[10].Name = "Ingredient6"
$dgvDrinksList.Columns[11].Name = "Ingredient7"
$dgvDrinksList.Columns[12].Name = "Ingredient8"
$dgvDrinksList.Columns[13].Name = "Ingredient9"
$dgvDrinksList.Columns[14].Name = "Ingredient10"
$dgvDrinksList.Columns[15].Name = "Ingredient11"
$dgvDrinksList.Columns[16].Name = "Ingredient12"
$dgvDrinksList.Columns[17].Name = "Ingredient13"
$dgvDrinksList.Columns[18].Name = "Ingredient14"
$dgvDrinksList.Columns[19].Name = "Ingredient15"
$dgvDrinksList.Columns[20].Name = "Measure1"
$dgvDrinksList.Columns[21].Name = "Measure2"
$dgvDrinksList.Columns[22].Name = "Measure3"
$dgvDrinksList.Columns[23].Name = "Measure4"
$dgvDrinksList.Columns[24].Name = "Measure5"
$dgvDrinksList.Columns[25].Name = "Measure6"
$dgvDrinksList.Columns[26].Name = "Measure7"
$dgvDrinksList.Columns[27].Name = "Measure8"
$dgvDrinksList.Columns[28].Name = "Measure9"
$dgvDrinksList.Columns[29].Name = "Measure10"
$dgvDrinksList.Columns[30].Name = "Measure11"
$dgvDrinksList.Columns[31].Name = "Measure12"
$dgvDrinksList.Columns[32].Name = "Measure13"
$dgvDrinksList.Columns[33].Name = "Measure14"
$dgvDrinksList.Columns[34].Name = "Measure15"
$dgvDrinksList.Columns[35].Name = "ImageUrl"

#region hide columns 1-35
$dgvDrinksList.Columns[1].Visible = $false
$dgvDrinksList.Columns[2].Visible = $false
$dgvDrinksList.Columns[3].Visible = $false
$dgvDrinksList.Columns[4].Visible = $false
$dgvDrinksList.Columns[5].Visible = $false
$dgvDrinksList.Columns[6].Visible = $false
$dgvDrinksList.Columns[7].Visible = $false
$dgvDrinksList.Columns[8].Visible = $false
$dgvDrinksList.Columns[9].Visible = $false
$dgvDrinksList.Columns[10].Visible = $false
$dgvDrinksList.Columns[11].Visible = $false
$dgvDrinksList.Columns[12].Visible = $false
$dgvDrinksList.Columns[13].Visible = $false
$dgvDrinksList.Columns[14].Visible = $false
$dgvDrinksList.Columns[15].Visible = $false
$dgvDrinksList.Columns[16].Visible = $false
$dgvDrinksList.Columns[17].Visible = $false
$dgvDrinksList.Columns[18].Visible = $false
$dgvDrinksList.Columns[19].Visible = $false
$dgvDrinksList.Columns[20].Visible = $false
$dgvDrinksList.Columns[21].Visible = $false
$dgvDrinksList.Columns[22].Visible = $false
$dgvDrinksList.Columns[23].Visible = $false
$dgvDrinksList.Columns[24].Visible = $false
$dgvDrinksList.Columns[25].Visible = $false
$dgvDrinksList.Columns[26].Visible = $false
$dgvDrinksList.Columns[27].Visible = $false
$dgvDrinksList.Columns[28].Visible = $false
$dgvDrinksList.Columns[29].Visible = $false
$dgvDrinksList.Columns[30].Visible = $false
$dgvDrinksList.Columns[31].Visible = $false
$dgvDrinksList.Columns[32].Visible = $false
$dgvDrinksList.Columns[33].Visible = $false
$dgvDrinksList.Columns[34].Visible = $false
$dgvDrinksList.Columns[35].Visible = $false
#endregion

$dgvDrinksList.Columns[0].AutoSizeMode = 'Fill'

foreach ($drink in $allDrinks) {
$dgvDrinksList.Rows.Add($drink.strDrink, $drink.strCategory, $drink.strAlcoholic, $drink.strGlass, $drink.strInstructions, $drink.strDrinkThumb, $drink.strIngredient1, $drink.strIngredient2, $drink.strIngredient3, $drink.strIngredient4, $drink.strIngredient5, $drink.strIngredient6, $drink.strIngredient7, $drink.strIngredient8, $drink.strIngredient9, $drink.strIngredient10, $drink.strIngredient11, $drink.strIngredient12, $drink.strIngredient13, $drink.strIngredient14, $drink.strIngredient15, $drink.strMeasure1, $drink.strMeasure2, $drink.strMeasure3, $drink.strMeasure4, $drink.strMeasure5, $drink.strMeasure6, $drink.strMeasure7, $drink.strMeasure8, $drink.strMeasure8, $drink.strMeasure9, $drink.strMeasure10, $drink.strMeasure11, $drink.strMeasure12, $drink.strMeasure13, $drink.strMeasure14, $drink.strMeasure15 )
}
}


$pbLogo_Click={
Start-Process "https://www.thecocktaildb.com/"
}

$dgvDrinksList_CellEnter=[System.Windows.Forms.DataGridViewCellEventHandler]{
#Event Argument: $_ = [System.Windows.Forms.DataGridViewCellEventArgs]
#Get Drink Picture
$pbDrinkPic.ImageLocation = "$($dgvDrinksList.CurrentRow.Cells[5].Value)"
$pbDrinkPic.SizeMode = 'Zoom'

#clear any existing data
$richtextboxOutput.Clear()

#Add Drink Details
$richtextboxOutput.AppendText("Drink Name: $($dgvDrinksList.CurrentRow.Cells[0].Value)`n")
$richtextboxOutput.AppendText("Drink Category: $($dgvDrinksList.CurrentRow.Cells[1].Value)`n")
$richtextboxOutput.AppendText("Alcohol: $($dgvDrinksList.CurrentRow.Cells[2].Value)`n")
$richtextboxOutput.AppendText("Glass: $($dgvDrinksList.CurrentRow.Cells[3].Value)`n`n")
$richtextboxOutput.AppendText("--Ingredients--`n")

#ingredients data exists in cells 6-20 and measurements 21-35
$i=21
foreach ($cell in 6 .. 20)
{
if (![string]::IsNullOrEmpty("$($($dgvDrinksList.CurrentRow.Cells[$cell].Value))"))
{
$richtextboxOutput.AppendText("$($dgvDrinksList.CurrentRow.Cells[$cell].Value) - $($dgvDrinksList.CurrentRow.Cells[$i].Value)`n")
}
$i++
}
$richtextboxOutput.AppendText("`n")
$richtextboxOutput.AppendText("--Instructions--`n")
$richtextboxOutput.AppendText("$($dgvDrinksList.CurrentRow.Cells[4].Value)")
}

$tbSearch_KeyDown=[System.Windows.Forms.KeyEventHandler]{
if ($_.KeyCode -eq 'Enter')
{
#Add-Type -AssemblyName "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
$dgvDrinksList.Rows.Clear()

foreach ($drink in $global:drinksList | Where-Object { $_ -like "*$($tbSearch.Text.Trim())*" })
{
$dgvDrinksList.Rows.Add($drink.strDrink, $drink.strCategory, $drink.strAlcoholic, $drink.strGlass, $drink.strInstructions, $drink.strDrinkThumb, $drink.strIngredient1, $drink.strIngredient2, $drink.strIngredient3, $drink.strIngredient4, $drink.strIngredient5, $drink.strIngredient6, $drink.strIngredient7, $drink.strIngredient8, $drink.strIngredient9, $drink.strIngredient10, $drink.strIngredient11, $drink.strIngredient12, $drink.strIngredient13, $drink.strIngredient14, $drink.strIngredient15, $drink.strMeasure1, $drink.strMeasure2, $drink.strMeasure3, $drink.strMeasure4, $drink.strMeasure5, $drink.strMeasure6, $drink.strMeasure7, $drink.strMeasure8, $drink.strMeasure8, $drink.strMeasure9, $drink.strMeasure10, $drink.strMeasure11, $drink.strMeasure12, $drink.strMeasure13, $drink.strMeasure14, $drink.strMeasure15)
}
}
}

$tbSearch_TextChanged={
$dgvDrinksList.Rows.Clear()

foreach ($drink in $global:drinksList | Where-Object { $_ -like "*$($tbSearch.Text.Trim())*" })
{
$dgvDrinksList.Rows.Add($drink.strDrink, $drink.strCategory, $drink.strAlcoholic, $drink.strGlass, $drink.strInstructions, $drink.strDrinkThumb, $drink.strIngredient1, $drink.strIngredient2, $drink.strIngredient3, $drink.strIngredient4, $drink.strIngredient5, $drink.strIngredient6, $drink.strIngredient7, $drink.strIngredient8, $drink.strIngredient9, $drink.strIngredient10, $drink.strIngredient11, $drink.strIngredient12, $drink.strIngredient13, $drink.strIngredient14, $drink.strIngredient15, $drink.strMeasure1, $drink.strMeasure2, $drink.strMeasure3, $drink.strMeasure4, $drink.strMeasure5, $drink.strMeasure6, $drink.strMeasure7, $drink.strMeasure8, $drink.strMeasure8, $drink.strMeasure9, $drink.strMeasure10, $drink.strMeasure11, $drink.strMeasure12, $drink.strMeasure13, $drink.strMeasure14, $drink.strMeasure15)
}

}

#----------------------------------------------
#region Events
#----------------------------------------------

$Form_StateCorrection_Load=
{
#Correct the initial state of the form to prevent the .Net maximized form issue
$FormMain.WindowState = $InitialFormWindowState
}

$Form_Cleanup_FormClosed=
{
#Remove all event handlers from the controls
try
{
$dgvDrinksList.remove_CellEnter($dgvDrinksList_CellEnter)
$pbLogo.remove_Click($pbLogo_Click)
$tbSearch.remove_TextChanged($tbSearch_TextChanged)
$tbSearch.remove_KeyDown($tbSearch_KeyDown)
$FormMain.remove_Load($FormMain_Load)
$FormMain.remove_Load($Form_StateCorrection_Load)
$FormMain.remove_FormClosed($Form_Cleanup_FormClosed)
}
catch { Out-Null <# Prevent PSScriptAnalyzer warning #> }
}
#endregion Events

#----------------------------------------------
#region Form Code
#----------------------------------------------
$FormMain.SuspendLayout()
$panel3.SuspendLayout()
$pbDrinkPic.BeginInit()
$panel2.SuspendLayout()
$dgvDrinksList.BeginInit()
$panelTop.SuspendLayout()
$pbLogo.BeginInit()
$panel4.SuspendLayout()
#
# FormMain
#
$FormMain.Controls.Add($panel3)
$FormMain.Controls.Add($panel2)
$FormMain.Controls.Add($panelTop)
$FormMain.AutoScaleDimensions = New-Object System.Drawing.SizeF(6, 13)
$FormMain.AutoScaleMode = 'Font'
$FormMain.BackColor = [System.Drawing.Color]::FromArgb(255, 35, 3, 18)
$FormMain.ClientSize = New-Object System.Drawing.Size(1214, 609)
$FormMain.MaximumSize = New-Object System.Drawing.Size(1230, 648)
$FormMain.MinimumSize = New-Object System.Drawing.Size(1230, 648)
$FormMain.Name = 'FormMain'
$FormMain.StartPosition = 'CenterScreen'
$FormMain.Text = 'TheCocktailDB'
$FormMain.add_Load($FormMain_Load)
#
# panel3
#
$panel3.Controls.Add($richtextboxOutput)
$panel3.Controls.Add($pbDrinkPic)
$panel3.Dock = 'Fill'
$panel3.Location = New-Object System.Drawing.Point(262, 103)
$panel3.Name = 'panel3'
$panel3.Size = New-Object System.Drawing.Size(952, 506)
$panel3.TabIndex = 2
#
# richtextboxOutput
#
$richtextboxOutput.BackColor = [System.Drawing.Color]::FromArgb(255, 35, 3, 18)
$richtextboxOutput.BorderStyle = 'None'
$richtextboxOutput.Font = [System.Drawing.Font]::new('Segoe UI', '9.75')
$richtextboxOutput.ForeColor = [System.Drawing.Color]::White
$richtextboxOutput.Location = New-Object System.Drawing.Point(488, 6)
$richtextboxOutput.Name = 'richtextboxOutput'
$richtextboxOutput.ReadOnly = $True
$richtextboxOutput.Size = New-Object System.Drawing.Size(452, 472)
$richtextboxOutput.TabIndex = 1
$richtextboxOutput.Text = ''
#
# pbDrinkPic
#
$pbDrinkPic.BackgroundImageLayout = 'Stretch'
$pbDrinkPic.Location = New-Object System.Drawing.Point(0, 3)
$pbDrinkPic.Name = 'pbDrinkPic'
$pbDrinkPic.Size = New-Object System.Drawing.Size(471, 500)
$pbDrinkPic.TabIndex = 0
$pbDrinkPic.TabStop = $False
#
# panel2
#
$panel2.Controls.Add($dgvDrinksList)
$panel2.BackColor = [System.Drawing.SystemColors]::GradientActiveCaption
$panel2.Dock = 'Left'
$panel2.Location = New-Object System.Drawing.Point(0, 103)
$panel2.Name = 'panel2'
$panel2.Size = New-Object System.Drawing.Size(262, 506)
$panel2.TabIndex = 1
#
# dgvDrinksList
#
$dgvDrinksList.AllowUserToAddRows = $False
$dgvDrinksList.AllowUserToDeleteRows = $False
$dgvDrinksList.AllowUserToResizeColumns = $False
$dgvDrinksList.AllowUserToResizeRows = $False
$dgvDrinksList.BackgroundColor = [System.Drawing.Color]::FromArgb(255, 35, 3, 18)
$dgvDrinksList.ColumnHeadersBorderStyle = 'None'
$System_Windows_Forms_DataGridViewCellStyle_1 = New-Object 'System.Windows.Forms.DataGridViewCellStyle'
$System_Windows_Forms_DataGridViewCellStyle_1.Alignment = 'MiddleLeft'
$System_Windows_Forms_DataGridViewCellStyle_1.BackColor = [System.Drawing.Color]::FromArgb(255, 35, 3, 18)
$System_Windows_Forms_DataGridViewCellStyle_1.Font = [System.Drawing.Font]::new('Microsoft Sans Serif', '8.25')
$System_Windows_Forms_DataGridViewCellStyle_1.ForeColor = [System.Drawing.Color]::White
$System_Windows_Forms_DataGridViewCellStyle_1.SelectionBackColor = [System.Drawing.Color]::FromArgb(255, 35, 3, 18)
$System_Windows_Forms_DataGridViewCellStyle_1.SelectionForeColor = [System.Drawing.SystemColors]::HighlightText
$System_Windows_Forms_DataGridViewCellStyle_1.WrapMode = 'True'
$dgvDrinksList.ColumnHeadersDefaultCellStyle = $System_Windows_Forms_DataGridViewCellStyle_1
$dgvDrinksList.ColumnHeadersHeightSizeMode = 'AutoSize'
$dgvDrinksList.ColumnHeadersVisible = $False
$dgvDrinksList.Dock = 'Fill'
$dgvDrinksList.EnableHeadersVisualStyles = $False
$dgvDrinksList.GridColor = [System.Drawing.Color]::FromArgb(255, 35, 3, 18)
$dgvDrinksList.Location = New-Object System.Drawing.Point(0, 0)
$dgvDrinksList.MultiSelect = $False
$dgvDrinksList.Name = 'dgvDrinksList'
$System_Windows_Forms_DataGridViewCellStyle_2 = New-Object 'System.Windows.Forms.DataGridViewCellStyle'
$System_Windows_Forms_DataGridViewCellStyle_2.Alignment = 'MiddleLeft'
$System_Windows_Forms_DataGridViewCellStyle_2.BackColor = [System.Drawing.Color]::FromArgb(255, 35, 3, 18)
$System_Windows_Forms_DataGridViewCellStyle_2.Font = [System.Drawing.Font]::new('Microsoft Sans Serif', '8.25')
$System_Windows_Forms_DataGridViewCellStyle_2.ForeColor = [System.Drawing.SystemColors]::WindowText
$System_Windows_Forms_DataGridViewCellStyle_2.SelectionBackColor = [System.Drawing.Color]::FromArgb(255, 35, 3, 18)
$System_Windows_Forms_DataGridViewCellStyle_2.SelectionForeColor = [System.Drawing.Color]:Big GrinarkOrange
$System_Windows_Forms_DataGridViewCellStyle_2.WrapMode = 'True'
$dgvDrinksList.RowHeadersDefaultCellStyle = $System_Windows_Forms_DataGridViewCellStyle_2
$dgvDrinksList.RowHeadersVisible = $False
$System_Windows_Forms_DataGridViewCellStyle_3 = New-Object 'System.Windows.Forms.DataGridViewCellStyle'
$System_Windows_Forms_DataGridViewCellStyle_3.BackColor = [System.Drawing.Color]::FromArgb(255, 35, 3, 18)
$System_Windows_Forms_DataGridViewCellStyle_3.Font = [System.Drawing.Font]::new('Segoe UI', '9.75')
$System_Windows_Forms_DataGridViewCellStyle_3.ForeColor = [System.Drawing.Color]::White
$System_Windows_Forms_DataGridViewCellStyle_3.SelectionBackColor = [System.Drawing.Color]::FromArgb(255, 35, 3, 18)
$System_Windows_Forms_DataGridViewCellStyle_3.SelectionForeColor = [System.Drawing.Color]::Yellow
$dgvDrinksList.RowsDefaultCellStyle = $System_Windows_Forms_DataGridViewCellStyle_3
$dgvDrinksList.Size = New-Object System.Drawing.Size(262, 506)
$dgvDrinksList.TabIndex = 0
$dgvDrinksList.add_CellEnter($dgvDrinksList_CellEnter)
#
# panelTop
#
$panelTop.Controls.Add($pbLogo)
$panelTop.Controls.Add($panel4)
$panelTop.BackColor = [System.Drawing.Color]::FromArgb(255, 35, 3, 18)
$panelTop.BorderStyle = 'FixedSingle'
$panelTop.Dock = 'Top'
$panelTop.Location = New-Object System.Drawing.Point(0, 0)
$panelTop.Name = 'panelTop'
$panelTop.Size = New-Object System.Drawing.Size(1214, 103)
$panelTop.TabIndex = 0
#
# pbLogo
#
$pbLogo.BackgroundImageLayout = 'Stretch'
$pbLogo.ImageLocation = 'https://www.thecocktaildb.com/images/logo.png'
$pbLogo.Location = New-Object System.Drawing.Point(0, 14)
$pbLogo.Name = 'pbLogo'
$pbLogo.Size = New-Object System.Drawing.Size(302, 56)
$pbLogo.TabIndex = 0
$pbLogo.TabStop = $False
$pbLogo.add_Click($pbLogo_Click)
#
# panel4
#
$panel4.Controls.Add($labelSearch)
$panel4.Controls.Add($tbSearch)
$panel4.BackColor = [System.Drawing.Color]::Brown
$panel4.Dock = 'Bottom'
$panel4.Location = New-Object System.Drawing.Point(0, 81)
$panel4.Name = 'panel4'
$panel4.Size = New-Object System.Drawing.Size(1212, 20)
$panel4.TabIndex = 1
#
# labelSearch
#
$labelSearch.AutoSize = $True
$labelSearch.ForeColor = [System.Drawing.Color]::White
$labelSearch.Location = New-Object System.Drawing.Point(2, 3)
$labelSearch.Name = 'labelSearch'
$labelSearch.Size = New-Object System.Drawing.Size(41, 13)
$labelSearch.TabIndex = 1
$labelSearch.Text = 'Search'
#
# tbSearch
#
$tbSearch.BackColor = [System.Drawing.Color]:Big GrinarkRed
$tbSearch.BorderStyle = 'FixedSingle'
$tbSearch.ForeColor = [System.Drawing.Color]::White
$tbSearch.Location = New-Object System.Drawing.Point(43, 0)
$tbSearch.Name = 'tbSearch'
$tbSearch.Size = New-Object System.Drawing.Size(218, 20)
$tbSearch.TabIndex = 0
$tbSearch.add_TextChanged($tbSearch_TextChanged)
$tbSearch.add_KeyDown($tbSearch_KeyDown)
$panel4.ResumeLayout()
$pbLogo.EndInit()
$panelTop.ResumeLayout()
$dgvDrinksList.EndInit()
$panel2.ResumeLayout()
$pbDrinkPic.EndInit()
$panel3.ResumeLayout()
$FormMain.ResumeLayout()
#endregion Form Code

#----------------------------------------------

#Save the initial state of the form
$InitialFormWindowState = $FormMain.WindowState
#Init the OnLoad event to correct the initial state of the form
$FormMain.add_Load($Form_StateCorrection_Load)
#Clean up the control events
$FormMain.add_FormClosed($Form_Cleanup_FormClosed)
#Show the Form
return $FormMain.ShowDialog()
Reply
Hello, I am a patreon supporter (under the same email) and I had a few questions as I am new to this api. For some reason while searching for multiple ingredients, I don't always get back accurate results. For instance, if I search something simple like vodka and orange juice, I would expect a screwdriver to appear, but instead it returns a "not found" however, while querying for something more complex like dry vernouth, gin, and anis (per the api example) I get back several cocktails. Am I doing something incorrectly?   Any clues would be much appreciated.
Reply
neverminded, I figured it out.
Reply
  • 1
  • 16
  • 17
  • 18
  • 19
  • 20(current)

Logout Mark Read Team Forum Stats Members Help
TheCocktailDB.com - An Open Cocktail Database with API2