265 lines
12 KiB
VB.net
265 lines
12 KiB
VB.net
|
Public Class Customise_Colours
|
|||
|
Dim OldTheme, CurrentTheme, PreSaveNiteTheme, PreSaveStandardTheme, PreSaveTertiaryTheme As Theme
|
|||
|
Dim unappliedchanges, unsaved As Boolean
|
|||
|
Dim SaveWarningThemeName As String
|
|||
|
|
|||
|
'WARNING: this code isn't pretty...
|
|||
|
|
|||
|
Public Property unapplied() As String
|
|||
|
Get
|
|||
|
Return unappliedchanges
|
|||
|
End Get
|
|||
|
Private Set(ByVal value As String)
|
|||
|
unappliedchanges = value
|
|||
|
InnerCancelButton.Enabled = unappliedchanges
|
|||
|
ApplyButton.Enabled = unappliedchanges
|
|||
|
SaveButton.Enabled = Not unappliedchanges
|
|||
|
End Set
|
|||
|
End Property
|
|||
|
|
|||
|
Private Sub Customise_Colours_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|||
|
Icon = ProgramIcon()
|
|||
|
PreSaveStandardTheme = ReturnThemeSettingsAsThemeObject(0)
|
|||
|
PreSaveNiteTheme = ReturnThemeSettingsAsThemeObject(1)
|
|||
|
PreSaveTertiaryTheme = ReturnThemeSettingsAsThemeObject(2)
|
|||
|
NotificationCategorySelector.SelectedIndex = 2
|
|||
|
ThemeSelector.SelectedIndex = 0 'todo: maybe change to reflect current theme?
|
|||
|
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ThemeSelector.SelectedIndexChanged
|
|||
|
If unsaved = True Then
|
|||
|
If MsgBox("Apply changes before switching?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
|||
|
Select Case SaveWarningThemeName
|
|||
|
Case "Standard"
|
|||
|
PreSaveStandardTheme = CurrentTheme
|
|||
|
Case "Nite"
|
|||
|
PreSaveNiteTheme = CurrentTheme
|
|||
|
Case "Tertiary"
|
|||
|
PreSaveTertiaryTheme = CurrentTheme
|
|||
|
End Select
|
|||
|
showThemeAppliedMessage()
|
|||
|
End If
|
|||
|
End If
|
|||
|
LoadTheme()
|
|||
|
SaveWarningThemeName = ThemeSelector.SelectedItem.ToString.Replace("Night", "Nite")
|
|||
|
unapplied = False
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub LoadTheme()
|
|||
|
Dim themeName As String = ThemeSelector.SelectedItem.ToString.Replace("Night", "Nite")
|
|||
|
Select Case themeName
|
|||
|
Case "Standard"
|
|||
|
CurrentTheme = PreSaveStandardTheme
|
|||
|
Case "Nite"
|
|||
|
CurrentTheme = PreSaveNiteTheme
|
|||
|
Case "Tertiary"
|
|||
|
CurrentTheme = PreSaveTertiaryTheme
|
|||
|
End Select
|
|||
|
PreviewCurrentTheme()
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub ThemeAppliedHideTimer_Tick(sender As Object, e As EventArgs) Handles ThemeAppliedHideTimer.Tick
|
|||
|
ThemeApplied.Visible = False
|
|||
|
ThemeAppliedHideTimer.Stop()
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub PreviewCurrentTheme() Handles NotificationCategorySelector.SelectedIndexChanged
|
|||
|
MockFilePicker.ForeColor = CurrentTheme.SidebarFG
|
|||
|
MockFilePicker.BackColor = CurrentTheme.SidebarBG
|
|||
|
MockStatusBar.ForeColor = CurrentTheme.StatusBarFG
|
|||
|
MockStatusBar.BackColor = CurrentTheme.StatusBarBG
|
|||
|
MockTextBox.ForeColor = CurrentTheme.TextBoxFG
|
|||
|
MockTextBox.BackColor = CurrentTheme.TextBoxBG
|
|||
|
Dim category As String = NotificationCategorySelector.SelectedItem.ToString
|
|||
|
MockNotification.ForeColor = CallByName(CurrentTheme, "Notification" & category & "FG", CallType.Get)
|
|||
|
MockNotification.BackColor = CallByName(CurrentTheme, "Notification" & category & "BG", CallType.Get)
|
|||
|
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub SetNewColour(sender As Object, e As EventArgs) Handles NotificationBGButton.Click, TextBoxBGButton.Click, SidebarBGButton.Click, SidebarFGButton.Click, StatusBarFGButton.Click, StatusBarBGButton.Click, NotificationFGButton.Click, TextBoxFGButton.Click
|
|||
|
Dim Clicked As String = sender.name.ToString.RemoveLast(6).Replace("Notification", "Notification" & NotificationCategorySelector.SelectedItem.ToString)
|
|||
|
ColourPicker.Color = CallByName(CurrentTheme, Clicked, CallType.Get)
|
|||
|
If ColourPicker.ShowDialog() = DialogResult.OK Then
|
|||
|
CallByName(CurrentTheme, Clicked, CallType.Set, ColourPicker.Color) 'TODO: why doesn't this work? >:c
|
|||
|
unapplied = True
|
|||
|
unsaved = True
|
|||
|
ShittyThemeSetWorkaround(Clicked, ColourPicker.Color)
|
|||
|
PreviewCurrentTheme()
|
|||
|
End If
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles InnerCancelButton.Click
|
|||
|
If MsgBox("Undo changes made and reload theme from settings?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
|||
|
unapplied = False
|
|||
|
LoadTheme()
|
|||
|
End If
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click, Button12.Click
|
|||
|
MsgBox("Not yet supported, sorry :c")
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
|
|||
|
'TODO: Restore defaults
|
|||
|
'Also, right clicking on a button should reset that thing to its default
|
|||
|
If MsgBox("Load the default colours for this theme?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
|||
|
Select Case ThemeSelector.SelectedIndex
|
|||
|
Case 0
|
|||
|
CurrentTheme = defaultStandardTheme
|
|||
|
Case 1
|
|||
|
CurrentTheme = defaultNightTheme
|
|||
|
Case 2
|
|||
|
CurrentTheme = defaultTertiaryTheme
|
|||
|
Case Else
|
|||
|
CurrentTheme = defaultStandardTheme
|
|||
|
End Select
|
|||
|
unsaved = True
|
|||
|
PreviewCurrentTheme()
|
|||
|
End If
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub ResetCategoryToDefaults(sender As Object, e As EventArgs) Handles NotificationAllDefaultButton.Click, NotificationCurrentDefaultButton.Click, StatusBarDefaultButton.Click, SidebarDefaultButton.Click, TextBoxDefaultButton.Click 'TODO: replace with a bunch of CallByNames?
|
|||
|
If MsgBox("Restore the default colours for this category to their defaults?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
|||
|
Dim Clicked As String = sender.name.ToString.RemoveLast(13)
|
|||
|
Select Case Clicked
|
|||
|
Case "NotificationAll]"
|
|||
|
CurrentTheme.NotificationCriticalBG = SelectedThemeDefaults.NotificationCriticalBG
|
|||
|
CurrentTheme.NotificationCriticalFG = SelectedThemeDefaults.NotificationCriticalBG
|
|||
|
CurrentTheme.NotificationWarningBG = SelectedThemeDefaults.NotificationCriticalBG
|
|||
|
CurrentTheme.NotificationWarningFG = SelectedThemeDefaults.NotificationCriticalBG
|
|||
|
CurrentTheme.NotificationInfoBG = SelectedThemeDefaults.NotificationCriticalBG
|
|||
|
CurrentTheme.NotificationInfoFG = SelectedThemeDefaults.NotificationCriticalBG
|
|||
|
Case "NotificationCurrent"
|
|||
|
Dim category As String = NotificationCategorySelector.SelectedItem.ToString
|
|||
|
CallByName(CurrentTheme, "Notification" & category & "FG", CallType.Set, CallByName(SelectedThemeDefaults, "Notification" & category & "FG", CallType.Get))
|
|||
|
CallByName(CurrentTheme, "Notification" & category & "BG", CallType.Set, CallByName(SelectedThemeDefaults, "Notification" & category & "BG", CallType.Get))
|
|||
|
Case "StatusBar"
|
|||
|
CurrentTheme.StatusBarBG = SelectedThemeDefaults.StatusBarBG
|
|||
|
CurrentTheme.StatusBarFG = SelectedThemeDefaults.StatusBarFG
|
|||
|
Case "TextBox"
|
|||
|
CurrentTheme.TextBoxBG = SelectedThemeDefaults.TextBoxBG
|
|||
|
CurrentTheme.TextBoxFG = SelectedThemeDefaults.TextBoxFG
|
|||
|
Case "Sidebar"
|
|||
|
CurrentTheme.SidebarFG = SelectedThemeDefaults.SidebarFG
|
|||
|
CurrentTheme.SidebarBG = SelectedThemeDefaults.SidebarBG
|
|||
|
End Select
|
|||
|
unsaved = True
|
|||
|
PreviewCurrentTheme()
|
|||
|
End If
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Function SelectedThemeDefaults() As Theme
|
|||
|
Select Case ThemeSelector.SelectedIndex
|
|||
|
Case 0
|
|||
|
Return defaultStandardTheme
|
|||
|
Case 1
|
|||
|
Return defaultNightTheme
|
|||
|
Case 2
|
|||
|
Return defaultTertiaryTheme
|
|||
|
Case Else
|
|||
|
Return defaultStandardTheme
|
|||
|
End Select
|
|||
|
End Function
|
|||
|
|
|||
|
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
|
|||
|
If MsgBox("Update sidebar colours to match editor colours?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
|||
|
CurrentTheme.SidebarBG = CurrentTheme.TextBoxBG
|
|||
|
CurrentTheme.SidebarFG = CurrentTheme.TextBoxFG
|
|||
|
End If
|
|||
|
unsaved = True
|
|||
|
PreviewCurrentTheme()
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
|
|||
|
If MsgBox("Update editor colours to match sidebar colours?", MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
|||
|
CurrentTheme.TextBoxBG = CurrentTheme.SidebarBG
|
|||
|
CurrentTheme.TextBoxFG = CurrentTheme.SidebarFG
|
|||
|
End If
|
|||
|
unsaved = True
|
|||
|
PreviewCurrentTheme()
|
|||
|
End Sub
|
|||
|
|
|||
|
Private Sub Button11_Click(sender As Object, e As EventArgs) Handles SaveButton.Click
|
|||
|
Dim themeName() As String = {"Standard", "Nite", "Tertiary"}
|
|||
|
For i = 0 To 2
|
|||
|
CallByName(My.Settings, themeName(i) & "NotifyColourCritical", CallType.Set, CallByName(GetPreSaveTheme(i), "NotificationCriticalBG", CallType.Get))
|
|||
|
CallByName(My.Settings, themeName(i) & "NotifyColourWarning", CallType.Set, CallByName(GetPreSaveTheme(i), "NotificationWarningBG", CallType.Get))
|
|||
|
CallByName(My.Settings, themeName(i) & "NotifyColourInfo", CallType.Set, CallByName(GetPreSaveTheme(i), "NotificationInfoBG", CallType.Get))
|
|||
|
CallByName(My.Settings, themeName(i) & "NotifyTextColourCritical", CallType.Set, CallByName(GetPreSaveTheme(i), "NotificationCriticalFG", CallType.Get))
|
|||
|
CallByName(My.Settings, themeName(i) & "NotifyTextColourWarning", CallType.Set, CallByName(GetPreSaveTheme(i), "NotificationWarningFG", CallType.Get))
|
|||
|
CallByName(My.Settings, themeName(i) & "NotifyTextColourInfo", CallType.Set, CallByName(GetPreSaveTheme(i), "NotificationInfoFG", CallType.Get))
|
|||
|
|
|||
|
CallByName(My.Settings, themeName(i) & "SidebarFG", CallType.Set, CallByName(GetPreSaveTheme(i), "SidebarFG", CallType.Get))
|
|||
|
CallByName(My.Settings, themeName(i) & "SidebarBG", CallType.Set, CallByName(GetPreSaveTheme(i), "SidebarBG", CallType.Get))
|
|||
|
CallByName(My.Settings, themeName(i) & "StatFG", CallType.Set, CallByName(GetPreSaveTheme(i), "StatusBarFG", CallType.Get))
|
|||
|
CallByName(My.Settings, themeName(i) & "StatBG", CallType.Set, CallByName(GetPreSaveTheme(i), "StatusBarBG", CallType.Get))
|
|||
|
CallByName(My.Settings, themeName(i) & "TextFG", CallType.Set, CallByName(GetPreSaveTheme(i), "TextBoxFG", CallType.Get))
|
|||
|
CallByName(My.Settings, themeName(i) & "TextBG", CallType.Set, CallByName(GetPreSaveTheme(i), "TextBoxBG", CallType.Get))
|
|||
|
Next
|
|||
|
My.Settings.Save()
|
|||
|
NPUWindow.reloadCurrentTheme()
|
|||
|
End Sub
|
|||
|
|
|||
|
Function GetPreSaveTheme(themeType As Integer)
|
|||
|
Select Case themeType
|
|||
|
Case 0
|
|||
|
Return PreSaveStandardTheme
|
|||
|
Case 1
|
|||
|
Return PreSaveNiteTheme
|
|||
|
Case 2
|
|||
|
Return PreSaveTertiaryTheme
|
|||
|
Case Else
|
|||
|
Return PreSaveStandardTheme
|
|||
|
End Select
|
|||
|
|
|||
|
End Function
|
|||
|
|
|||
|
Private Sub Button9_Click(sender As Object, e As EventArgs) Handles ApplyButton.Click
|
|||
|
Dim themeName As String = ThemeSelector.SelectedItem.ToString
|
|||
|
Select Case themeName
|
|||
|
Case "Standard"
|
|||
|
PreSaveStandardTheme = CurrentTheme
|
|||
|
Case "Night"
|
|||
|
PreSaveNiteTheme = CurrentTheme
|
|||
|
Case "Tertiary"
|
|||
|
PreSaveTertiaryTheme = CurrentTheme
|
|||
|
End Select
|
|||
|
unapplied = False
|
|||
|
showThemeAppliedMessage()
|
|||
|
End Sub
|
|||
|
|
|||
|
Public Sub ShittyThemeSetWorkaround(Name, Colour) 'upside to using non-american english in a programming language written in american english: calling the variable "color" would've fucked things up, because you can't redefine the built in class! ;p
|
|||
|
'If CallByName(currentTheme, Name, CallType.Get) = Colour Then MsgBox("It actually worked")
|
|||
|
Select Case Name
|
|||
|
Case "NotificationInfoBG"
|
|||
|
CurrentTheme.NotificationInfoBG = Colour
|
|||
|
Case "NotificationInfoFG"
|
|||
|
CurrentTheme.NotificationInfoFG = Colour
|
|||
|
Case "NotificationWarningBG"
|
|||
|
CurrentTheme.NotificationWarningBG = Colour
|
|||
|
Case "NotificationWarningFG"
|
|||
|
CurrentTheme.NotificationWarningFG = Colour
|
|||
|
Case "NotificationCriticalBG"
|
|||
|
CurrentTheme.NotificationCriticalBG = Colour
|
|||
|
Case "NotificationCriticalFG"
|
|||
|
CurrentTheme.NotificationCriticalFG = Colour
|
|||
|
Case "TextBoxBG"
|
|||
|
CurrentTheme.TextBoxBG = Colour
|
|||
|
Case "TextBoxFG"
|
|||
|
CurrentTheme.TextBoxFG = Colour
|
|||
|
Case "SidebarBG"
|
|||
|
CurrentTheme.SidebarBG = Colour
|
|||
|
Case "SidebarFG"
|
|||
|
CurrentTheme.SidebarFG = Colour
|
|||
|
Case "StatusBarBG"
|
|||
|
CurrentTheme.StatusBarBG = Colour
|
|||
|
Case "StatusBarFG"
|
|||
|
CurrentTheme.StatusBarFG = Colour
|
|||
|
End Select
|
|||
|
End Sub
|
|||
|
Public Sub showThemeAppliedMessage()
|
|||
|
ThemeApplied.Visible = True
|
|||
|
ThemeAppliedHideTimer.Start()
|
|||
|
End Sub
|
|||
|
End Class
|