196 lines
No EOL
8.4 KiB
VB.net
196 lines
No EOL
8.4 KiB
VB.net
'DON'T FORGET TO COPY THESE BITS TOO!
|
|
Imports System.Runtime.CompilerServices
|
|
Imports System.Text.RegularExpressions
|
|
|
|
Public Module Extensions
|
|
Public defaultStandardTheme, defaultNightTheme, defaultTertiaryTheme As Theme
|
|
Public ControlColour As Color = SystemColors.Control 'shorthand due to laziness and bad memory
|
|
Public FileToOpen As String = ""
|
|
Public Structure Notification
|
|
Dim Text As String
|
|
Dim Category As Integer
|
|
End Structure
|
|
|
|
Public Structure Theme
|
|
Dim TextBoxFG, TextBoxBG, SidebarFG, SidebarBG, StatusBarFG, StatusBarBG, NotificationCriticalFG, NotificationCriticalBG, NotificationWarningFG, NotificationWarningBG, NotificationInfoFG, NotificationInfoBG As Color
|
|
End Structure
|
|
|
|
'*******************
|
|
'***REUSABLE CODE***
|
|
'*******************
|
|
'everything between here and the "end reusable" section can be reused in future projects
|
|
|
|
Public Function GetPath(file As String, Optional AppendBackslash As Boolean = True) As String
|
|
Dim FileArray As String() = file.Split("\")
|
|
Dim ReturnMe As String = ""
|
|
For i = 0 To FileArray.Length - 2
|
|
ReturnMe &= FileArray(i) & "\"
|
|
Next
|
|
If Not AppendBackslash Then ReturnMe.RemoveLast(1)
|
|
Return ReturnMe
|
|
End Function
|
|
|
|
Public Function GetFile(file As String, Optional StripExtension As Boolean = False) As String
|
|
If StripExtension Then
|
|
Return RemoveFileExtension(file.Split("\")(file.Split("\").Length - 1)) 'strips the file extension, including the period. returns "filename" for "C:\filename.png"
|
|
Else
|
|
Return file.Split("\")(file.Split("\").Length - 1) 'returns the last item divided by backslashes. returns "filename.png" for "C:\filename.png".
|
|
End If
|
|
End Function
|
|
|
|
Public Function RemoveFileExtension(Filename As String) As String
|
|
Return Filename.RemoveLastInstanceOf("." & Filename.Split(".")(Filename.Split.Length))
|
|
End Function
|
|
|
|
Public Function GetFileExtension(Filename As String) As String
|
|
Return "." & Filename.Split(".")(Filename.Split(".").Length - 1)
|
|
End Function
|
|
|
|
Public Function ValidFileName(NameToCheck As String, Optional AllowPeriods As Boolean = False) As Boolean
|
|
If Not IsNothing(NameToCheck) Then
|
|
Dim disallowedCharacters As String() = {"/", "\", "<", ">", ":", "?", "*", ",", "|", "."}
|
|
If AllowPeriods Then NameToCheck = NameToCheck.Replace(".", " ")
|
|
For i = 0 To disallowedCharacters.Length - 1
|
|
If NameToCheck.Contains(disallowedCharacters(i)) Then
|
|
Return False
|
|
End If
|
|
Next
|
|
Else
|
|
Return False
|
|
End If
|
|
Return True
|
|
End Function
|
|
|
|
Public Function ProgramIcon() As Icon
|
|
Return Icon.ExtractAssociatedIcon(Application.ExecutablePath)
|
|
End Function
|
|
|
|
<Extension()>
|
|
Public Function RemoveLast(ByVal stringToModify As String, amountToRemove As Integer) As String
|
|
Return stringToModify.Remove(stringToModify.Length - amountToRemove)
|
|
End Function
|
|
|
|
<Extension()>
|
|
Public Function RemoveFirst(ByVal StringToModify As String, AmountToRemove As Integer) As String
|
|
Return StrReverse(StrReverse(StringToModify).Remove(StringToModify.Length - AmountToRemove))
|
|
End Function
|
|
|
|
<Extension()>
|
|
Public Function RemoveLastInstanceOf(ByVal StringToModify As String, StringToRemove As String) As String
|
|
Return StrReverse(Replace(StrReverse(StringToModify), StrReverse(StringToRemove), "",, 1))
|
|
End Function
|
|
|
|
<Extension()>
|
|
Function BatchRemove(ByRef StringToClean As String, TextToStrip As String()) As String
|
|
Dim ReturnText As String = StringToClean
|
|
For i = 0 To TextToStrip.Count - 1
|
|
ReturnText = ReturnText.Replace(TextToStrip(i), "")
|
|
Next
|
|
Return ReturnText
|
|
End Function
|
|
|
|
Public Function RandomArrayObject(Array) As Object
|
|
If IsNothing(Array) Then Return "===ERROR: Passed array is empty!==="
|
|
Return Array(Rnd() * (Array.Length - 1))
|
|
End Function
|
|
|
|
Public Function RAO(Array) As Object
|
|
Return RandomArrayObject(Array)
|
|
End Function
|
|
|
|
Public Function ValidURL(URL) As Boolean ' http://stackoverflow.com/a/3809435
|
|
Dim URLCheckPattern As String = "(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_\+.~#?&//=]*)"
|
|
Return Regex.IsMatch(URL, URLCheckPattern, RegexOptions.IgnoreCase) 'WARNING: returns true for invalid/missing TLDs (such as: invalidurl/file.html)
|
|
End Function
|
|
|
|
'******************
|
|
'***END REUSABLE***
|
|
'******************
|
|
|
|
Public Function ReturnThemeSettingsAsThemeObject(chosenThemeIndex As String)
|
|
Try
|
|
chosenThemeIndex = CInt(chosenThemeIndex)
|
|
If chosenThemeIndex > 2 Then chosenThemeIndex = 0
|
|
|
|
Catch ex As Exception
|
|
chosenThemeIndex = chosenThemeIndex.ToLower()
|
|
If chosenThemeIndex.Contains("standard") Then
|
|
chosenThemeIndex = 0
|
|
ElseIf chosenThemeIndex.Contains("night") Or chosenThemeIndex.Contains("nite") Then
|
|
chosenThemeIndex = 1
|
|
Else
|
|
chosenThemeIndex = 2
|
|
End If
|
|
End Try
|
|
Dim themeName() As String = {"Standard", "Nite", "Tertiary"}
|
|
|
|
Dim returnedTheme As Theme
|
|
returnedTheme.NotificationCriticalBG = CallByName(My.Settings, themeName(chosenThemeIndex) & "NotifyColourCritical", CallType.Get)
|
|
returnedTheme.NotificationWarningBG = CallByName(My.Settings, themeName(chosenThemeIndex) & "NotifyColourWarning", CallType.Get)
|
|
returnedTheme.NotificationInfoBG = CallByName(My.Settings, themeName(chosenThemeIndex) & "NotifyColourInfo", CallType.Get)
|
|
returnedTheme.NotificationCriticalFG = CallByName(My.Settings, themeName(chosenThemeIndex) & "NotifyTextColourCritical", CallType.Get)
|
|
returnedTheme.NotificationWarningFG = CallByName(My.Settings, themeName(chosenThemeIndex) & "NotifyTextColourWarning", CallType.Get)
|
|
returnedTheme.NotificationInfoFG = CallByName(My.Settings, themeName(chosenThemeIndex) & "NotifyTextColourInfo", CallType.Get)
|
|
|
|
returnedTheme.SidebarFG = CallByName(My.Settings, themeName(chosenThemeIndex) & "SidebarFG", CallType.Get)
|
|
returnedTheme.SidebarBG = CallByName(My.Settings, themeName(chosenThemeIndex) & "SidebarBG", CallType.Get)
|
|
returnedTheme.StatusBarFG = CallByName(My.Settings, themeName(chosenThemeIndex) & "StatFG", CallType.Get)
|
|
returnedTheme.StatusBarBG = CallByName(My.Settings, themeName(chosenThemeIndex) & "StatBG", CallType.Get)
|
|
returnedTheme.TextBoxFG = CallByName(My.Settings, themeName(chosenThemeIndex) & "TextFG", CallType.Get)
|
|
returnedTheme.TextBoxBG = CallByName(My.Settings, themeName(chosenThemeIndex) & "TextBG", CallType.Get)
|
|
|
|
Return returnedTheme
|
|
End Function
|
|
|
|
Public Sub SetDefaultThemes()
|
|
'********************
|
|
'***DEFAULT THEMES***
|
|
'********************
|
|
|
|
'Standard:
|
|
|
|
defaultStandardTheme.TextBoxBG = Color.White
|
|
defaultStandardTheme.TextBoxFG = Color.Black
|
|
defaultStandardTheme.SidebarBG = Color.White
|
|
defaultStandardTheme.SidebarFG = Color.Black
|
|
defaultStandardTheme.StatusBarBG = ControlColour
|
|
defaultStandardTheme.StatusBarFG = Color.Black
|
|
defaultStandardTheme.NotificationCriticalBG = Color.Red
|
|
defaultStandardTheme.NotificationCriticalFG = Color.White
|
|
defaultStandardTheme.NotificationWarningBG = Color.Orange
|
|
defaultStandardTheme.NotificationWarningFG = Color.White
|
|
defaultStandardTheme.NotificationInfoBG = Color.Green
|
|
defaultStandardTheme.NotificationInfoFG = Color.White
|
|
|
|
'Night:
|
|
|
|
defaultNightTheme.TextBoxBG = Color.FromArgb(30, 30, 30)
|
|
defaultNightTheme.TextBoxFG = Color.FromArgb(226, 226, 226)
|
|
defaultNightTheme.SidebarBG = Color.FromArgb(30, 30, 30)
|
|
defaultNightTheme.SidebarFG = Color.FromArgb(226, 226, 226)
|
|
defaultNightTheme.StatusBarBG = Color.Black
|
|
defaultNightTheme.StatusBarFG = Color.White
|
|
defaultNightTheme.NotificationCriticalBG = Color.Black
|
|
defaultNightTheme.NotificationCriticalFG = Color.Red
|
|
defaultNightTheme.NotificationWarningBG = Color.Black
|
|
defaultNightTheme.NotificationWarningFG = Color.Orange
|
|
defaultNightTheme.NotificationInfoBG = Color.Black
|
|
defaultNightTheme.NotificationInfoFG = Color.LimeGreen
|
|
|
|
'Tertiary:
|
|
|
|
defaultTertiaryTheme.TextBoxBG = Color.RoyalBlue
|
|
defaultTertiaryTheme.TextBoxFG = Color.White
|
|
defaultTertiaryTheme.SidebarBG = Color.RoyalBlue
|
|
defaultTertiaryTheme.SidebarFG = Color.White
|
|
defaultTertiaryTheme.StatusBarBG = ControlColour
|
|
defaultTertiaryTheme.StatusBarFG = Color.Black
|
|
defaultTertiaryTheme.NotificationCriticalBG = Color.Red
|
|
defaultTertiaryTheme.NotificationCriticalFG = Color.White
|
|
defaultTertiaryTheme.NotificationWarningBG = Color.Orange
|
|
defaultTertiaryTheme.NotificationWarningFG = Color.White
|
|
defaultTertiaryTheme.NotificationInfoBG = Color.Green
|
|
defaultTertiaryTheme.NotificationInfoFG = Color.White
|
|
End Sub
|
|
|
|
End Module |