Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved the Add and R Help buttons with scrollbar on the General Graphic Dialog #8673

Closed
wants to merge 5 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 7 additions & 112 deletions instat/dlgGeneralForGraphics.vb
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,11 @@ Public Class dlgGeneralForGraphics
ucrSave.SetDataFrameSelector(ucrGraphicsSelector.ucrAvailableDataFrames)
ucrSave.SetAssignToIfUncheckedValue("last_graph")
VariableXType()

cmdRHelp.AddItemsToListbox({"geomtextpath", "GGally", "ggalt", "ggdendro", "ggeffects",
"ggfittext", "ggforce", "ggformula", "ggfortify", "ggmcmc", "ggmosaic", "ggplotify", "ggpmisc",
"ggpp", "ggpubr", "ggrepel", "ggsci", "ggsignif", "ggstance", "ggtext", "ggthemes", "ggwordbluid"})
cmdRHelp._bUseListBox = True
End Sub

Private Sub SetDefaults()
Expand Down Expand Up @@ -403,118 +408,8 @@ Public Class dlgGeneralForGraphics
OpenHelpPage()
End Sub

Private Sub GeomtextpathToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GeomtextpathToolStripMenuItem.Click
strPackageName = "geomtextpath"
OpenHelpPage()
End Sub

Private Sub GGallyToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GGallyToolStripMenuItem.Click
strPackageName = "GGally"
OpenHelpPage()
End Sub

Private Sub GgaltToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgaltToolStripMenuItem.Click
strPackageName = "ggalt"
OpenHelpPage()
End Sub

Private Sub GgdendroToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgdendroToolStripMenuItem.Click
strPackageName = "ggdendro"
OpenHelpPage()
End Sub

Private Sub GgeffectsToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgeffectsToolStripMenuItem.Click
strPackageName = "ggeffects"
OpenHelpPage()
End Sub

Private Sub GgfittextToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgfittextToolStripMenuItem.Click
strPackageName = "ggfittext"
OpenHelpPage()
End Sub

Private Sub GgforceToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgforceToolStripMenuItem.Click
strPackageName = "ggforce"
OpenHelpPage()
End Sub

Private Sub GgformulaToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgformulaToolStripMenuItem.Click
strPackageName = "ggformula"
OpenHelpPage()
End Sub

Private Sub GgfortifyToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgfortifyToolStripMenuItem.Click
strPackageName = "ggfortify"
OpenHelpPage()
End Sub

Private Sub GgmcmcToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgmcmcToolStripMenuItem.Click
strPackageName = "ggmcmc"
OpenHelpPage()
End Sub

Private Sub GgmosaicToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgmosaicToolStripMenuItem.Click
strPackageName = "ggmosaic"
OpenHelpPage()
End Sub

Private Sub GgplotifyToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgplotifyToolStripMenuItem.Click
strPackageName = "ggplotify"
OpenHelpPage()
End Sub

Private Sub GgpmiscToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgpmiscToolStripMenuItem.Click
strPackageName = "ggpmisc"
OpenHelpPage()
End Sub

Private Sub GgppToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgppToolStripMenuItem.Click
strPackageName = "ggpp"
OpenHelpPage()
End Sub

Private Sub GgpubrToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgpubrToolStripMenuItem.Click
strPackageName = "ggpubr"
OpenHelpPage()
End Sub

Private Sub GgrepelToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgrepelToolStripMenuItem.Click
strPackageName = "ggrepel"
OpenHelpPage()
End Sub

Private Sub GgridgesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgridgesToolStripMenuItem.Click
strPackageName = "ggridges"
OpenHelpPage()
End Sub

Private Sub GgsciToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgsciToolStripMenuItem.Click
strPackageName = "ggsci"
OpenHelpPage()
End Sub

Private Sub GgsignifToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgsignifToolStripMenuItem.Click
strPackageName = "ggsignif"
OpenHelpPage()
End Sub

Private Sub GgstanceToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgstanceToolStripMenuItem.Click
strPackageName = "ggstance"
OpenHelpPage()
End Sub

Private Sub GgtextToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgtextToolStripMenuItem.Click
strPackageName = "ggtext"
OpenHelpPage()
End Sub

Private Sub GgthemesToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgthemesToolStripMenuItem.Click
strPackageName = "ggthemes"
OpenHelpPage()
End Sub

Private Sub GgwordbuildToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles GgwordbuildToolStripMenuItem.Click
strPackageName = "ggwordbluid"
Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmdRHelp.ListBoxSelectedIndexChanged
strPackageName = cmdRHelp._listBox.SelectedItem
OpenHelpPage()
End Sub

Expand Down
110 changes: 48 additions & 62 deletions instat/ucrAdditionalLayers.vb
Original file line number Diff line number Diff line change
Expand Up @@ -88,73 +88,48 @@ Public Class ucrAdditionalLayers

Private Sub ucrAdditionalLayers_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SetEditDeleteEnabled()
cmdAdd.AddItemsToListbox({"geom_bar", "geom_boxplot", "geom_categorical_model", "geom_col", "geom_contour", "geom_count", "geom_density", "geom_density_ridges",
"geom_histogram", "geom_jitter", "geom_label", "geom_label_repel", "geom_line", "geom_parallel_slopes", "geom_point",
"geom_rug", "geom_smooth", "geom_text", "geom_text_repel", "geom_tile"})
cmdAdd._bUseListBox = True
End Sub

Private Sub cmdAdd_Click(sender As Object, e As EventArgs) Handles cmdAdd.Click, toolStripMenuItemGeomBar.Click, toolStripMenuItemGeomBoxPlot.Click, toolStripMenuItemGeomCol.Click, toolStripMenuItemGeomCount.Click, toolStripMenuItemGeomcategoricalmodel.Click,
toolStripMenuItemGeomDensity.Click, toolStripMenuItemGeomJitter.Click, toolStripMenuItemGeomLabel.Click, toolStripMenuItemGeomparallelslopes.Click, toolStripMenuItemGeomtile.Click, toolStripMenuItemGeomcontour.Click, toolStripMenuItemGeomhistogram.Click,
toolStripMenuItemGeomLabelRepel.Click, toolStripMenuItemGeomLine.Click, toolStripMenuItemGeomsmooth.Click, toolStripMenuItemGeomPoint.Click, toolStripMenuItemGeomRug.Click, toolStripMenuItemGeomText.Click, toolStripMenuItemGeomTextRepel.Click, toolStripMenuItemGeomDensityRidges.Click

Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmdAdd.ListBoxSelectedIndexChanged
Dim strSelectedGeom As String = cmdAdd._listBox.SelectedItem
'setup the geom function to use
Dim clsNewGeomFunction As New RFunction
Dim strGeomRCommand As String = "geom_boxplot"
Dim strPackage As String = "ggplot2"
Dim bShowLayerSubdialog As Boolean = False

If sender Is toolStripMenuItemGeomBoxPlot Then
strGeomRCommand = "geom_boxplot"
ElseIf sender Is toolStripMenuItemGeomBar Then
strGeomRCommand = "geom_bar"
ElseIf sender Is toolStripMenuItemGeomCount Then
strGeomRCommand = "geom_count"
ElseIf sender Is toolStripMenuItemGeomCol Then
strGeomRCommand = "geom_col"
ElseIf sender Is toolStripMenuItemGeomDensity Then
strGeomRCommand = "geom_density"
ElseIf sender Is toolStripMenuItemGeomtile Then
strGeomRCommand = "geom_tile"
ElseIf sender Is toolStripMenuItemGeomJitter Then
strGeomRCommand = "geom_jitter"
ElseIf sender Is toolStripMenuItemGeomhistogram Then
strGeomRCommand = "geom_histogram"
ElseIf sender Is toolStripMenuItemGeomcontour Then
strGeomRCommand = "geom_contour"
ElseIf sender Is toolStripMenuItemGeomDensityRidges Then

If strSelectedGeom Is "geom_density_ridges" Then
strPackage = "ggridges"
strGeomRCommand = "geom_density_ridges"
ElseIf sender Is toolStripMenuItemGeomLabel Then
strGeomRCommand = "geom_label"
ElseIf sender Is toolStripMenuItemGeomLabelRepel Then
ElseIf strSelectedGeom Is "geom_label_repel" Then
strPackage = "ggrepel"
strGeomRCommand = "geom_label_repel"
ElseIf sender Is toolStripMenuItemGeomLine Then
strGeomRCommand = "geom_line"
ElseIf sender Is toolStripMenuItemGeomPoint Then
strGeomRCommand = "geom_point"
ElseIf sender Is toolStripMenuItemGeomRug Then
strGeomRCommand = "geom_rug"
ElseIf sender Is toolStripMenuItemGeomsmooth Then
strGeomRCommand = "geom_smooth"
ElseIf sender Is toolStripMenuItemGeomText Then
strGeomRCommand = "geom_text"
ElseIf sender Is toolStripMenuItemGeomTextRepel Then
ElseIf strSelectedGeom Is "geom_text_repel" Then
strPackage = "ggrepel"
strGeomRCommand = "geom_text_repel"
ElseIf sender Is toolStripMenuItemGeomcategoricalmodel Then
ElseIf strSelectedGeom Is "geom_categorical_model" Then
strPackage = "moderndive"
strGeomRCommand = "geom_categorical_model"
ElseIf sender Is toolStripMenuItemGeomparallelslopes Then
ElseIf strSelectedGeom Is "geom_parallel_slopes" Then
strPackage = "moderndive"
strGeomRCommand = "geom_parallel_slopes"
ElseIf sender Is cmdAdd Then
bShowLayerSubdialog = True
End If

clsNewGeomFunction.SetPackageName(strPackage)
clsNewGeomFunction.SetRCommand(strGeomRCommand)
clsNewGeomFunction.SetRCommand(strSelectedGeom)

'incremnet the dialog parameter position to get unique argument name
iMaxParameterPosition += 1

AddLayer(clsNewGeomFunction, iMaxParameterPosition)
End Sub

Private Sub cmdAdd_Click(sender As Object, e As EventArgs) Handles cmdAdd.Click
'setup the geom function to use
Dim clsNewGeomFunction As New RFunction

clsNewGeomFunction.SetPackageName("ggplot2")
clsNewGeomFunction.SetRCommand("geom_boxplot")

'if no specific geom command selected then show the layer subdialog for geom command selection
If bShowLayerSubdialog Then
sdgLayerOptions.SetupLayer(clsNewGgPlot:=clsGgplotFunction,
sdgLayerOptions.SetupLayer(clsNewGgPlot:=clsGgplotFunction,
clsNewGeomFunc:=clsNewGeomFunction,
clsNewGlobalAesFunc:=clsGlobalAesFunction,
clsNewLocalAes:=GgplotDefaults.clsAesFunction,
Expand All @@ -163,24 +138,35 @@ Public Class ucrAdditionalLayers
bApplyAesGlobally:=(bSetGlobalIsDefault AndAlso lstLayers.Items.Count = 0),
iTabToDisplay:=0,
strDataFrame:=strGlobalDataFrame)
ParentForm.SendToBack()
sdgLayerOptions.ShowDialog()
'get the new options from the subdialog
'todo. Should what should happen if a user clicks on Cancel in the sub dialog?
strGlobalDataFrame = sdgLayerOptions.GetGlobalDataFrame()
clsNewGeomFunction = sdgLayerOptions.clsGeomFunction.Clone()
End If
ParentForm.SendToBack()
sdgLayerOptions.ShowDialog()
'get the new options from the subdialog
'todo. Should what should happen if a user clicks on Cancel in the sub dialog?
strGlobalDataFrame = sdgLayerOptions.GetGlobalDataFrame()
clsNewGeomFunction = sdgLayerOptions.clsGeomFunction.Clone()

'incremnet the dialog parameter position to get unique argument name
iMaxParameterPosition += 1

AddLayer(clsNewGeomFunction, iMaxParameterPosition)

''add the geom function as a new parameter of the dialog base operator
'Dim clsNewGeomParameter As New RParameter(clsNewGeomFunction.strRCommand & iMaxParameterPosition,
' clsNewGeomFunction, iNewPosition:=iMaxParameterPosition)
'clsBaseOperator.AddParameter(clsNewGeomParameter)

''add the parameter to the list of layers
'AddLayerToList(clsNewGeomParameter, clsNewGeomFunction.strRCommand, bLayerComplete:=sdgLayerOptions.TestForOKEnabled())
End Sub

Private Sub AddLayer(clsNewGeomFunc As RFunction, iParamater As Integer)
'add the geom function as a new parameter of the dialog base operator
Dim clsNewGeomParameter As New RParameter(clsNewGeomFunction.strRCommand & iMaxParameterPosition,
clsNewGeomFunction, iNewPosition:=iMaxParameterPosition)
Dim clsNewGeomParameter As New RParameter(clsNewGeomFunc.strRCommand & iParamater,
clsNewGeomFunc, iNewPosition:=iParamater)
clsBaseOperator.AddParameter(clsNewGeomParameter)

'add the parameter to the list of layers
AddLayerToList(clsNewGeomParameter, clsNewGeomFunction.strRCommand, bLayerComplete:=sdgLayerOptions.TestForOKEnabled())
AddLayerToList(clsNewGeomParameter, clsNewGeomFunc.strRCommand, bLayerComplete:=sdgLayerOptions.TestForOKEnabled())
End Sub

Private Sub SetEditDeleteEnabled()
Expand Down
37 changes: 35 additions & 2 deletions instat/ucrSplitButton.vb
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ Public Class ucrSplitButton
Private _textFormatFlags As TextFormatFlags = TextFormatFlags.Default
Private _bSkipNextOpen As Boolean
Private _bMouseEntered As Boolean
Public _bUseListBox As Boolean = False
Public WithEvents _listBox As New ListBox()

' Event to be raised when ListBox selected index changes
Public Event ListBoxSelectedIndexChanged As EventHandler

Public Sub New()
'by default support the autosize. This control aligns it's elements in runtime
Expand Down Expand Up @@ -585,9 +590,37 @@ Public Class ucrSplitButton

State = PushButtonState.Pressed

If _contextSplitMenuStrip IsNot Nothing Then
_contextSplitMenuStrip.Show(Me, New Point(0, Height), ToolStripDropDownDirection.BelowRight)
If _bUseListBox Then
Dim tmpForm = New Form
tmpForm.AutoScaleMode = AutoScaleMode.None
tmpForm.FormBorderStyle = FormBorderStyle.None
tmpForm.StartPosition = FormStartPosition.Manual
tmpForm.ShowInTaskbar = False
tmpForm.Size = New Size(150, 130)
_listBox.BorderStyle = BorderStyle.FixedSingle
_listBox.Dock = DockStyle.Fill ' Make the ListBox fill the form
tmpForm.Controls.Add(_listBox)

tmpForm.Location = PointToScreen(New Point(0, Height))
tmpForm.Show()
Else
If _contextSplitMenuStrip IsNot Nothing Then
_contextSplitMenuStrip.Show(Me, New Point(0, Height), ToolStripDropDownDirection.BelowRight)
End If
End If
End Sub

Public Sub AddItemsToListbox(item As Object)
If item Is Nothing Then
Exit Sub
End If

_listBox.Items.AddRange(item)
End Sub

Private Sub OnListBoxSelectedIndexChanged(sender As Object, e As EventArgs) Handles _listBox.SelectedIndexChanged
' Raise the custom event when ListBox selected index changes
RaiseEvent ListBoxSelectedIndexChanged(sender, e)
End Sub

Private Sub SplitMenuStrip_Opening(sender As Object, e As CancelEventArgs)
Expand Down
Loading