2020-05-03 08:39:35 +00:00
using System ;
using System.IO ;
using System.Collections.Generic ;
using System.Linq ;
using System.Reflection ;
using System.Threading.Tasks ;
using System.Windows.Forms ;
using HeliosPlus.Resources ;
using HeliosPlus.Shared ;
2020-05-09 13:02:07 +00:00
using System.Drawing ;
using System.Drawing.Drawing2D ;
using System.Globalization ;
2020-05-10 10:47:18 +00:00
using Manina.Windows.Forms ;
using System.Text.RegularExpressions ;
2020-05-03 08:39:35 +00:00
namespace HeliosPlus.UIForms
{
internal partial class DisplayProfileForm : Form
{
private const string GroupActive = "active" ;
private const string GroupCurrent = "current" ;
private const string GroupSaved = "saved" ;
2020-05-09 13:02:07 +00:00
private Profile _selectedProfile ;
private List < Profile > _savedProfiles = new List < Profile > ( ) ;
private string _saveOrRenameMode = "save" ;
/ * void lv_profiles_DrawItem ( object sender , DrawListViewItemEventArgs e )
{
if ( ( e . State & ListViewItemStates . Selected ) ! = 0 )
{
// Draw the background and focus rectangle for a selected item.
e . Graphics . FillRectangle ( Brushes . Maroon , e . Bounds ) ;
e . DrawFocusRectangle ( ) ;
}
* //*else
{
// Draw the background for an unselected item.
using ( LinearGradientBrush brush =
new LinearGradientBrush ( e . Bounds , Color . Orange ,
Color . Maroon , LinearGradientMode . Horizontal ) )
{
e . Graphics . FillRectangle ( brush , e . Bounds ) ;
}
} * //*
Point profileImagePoint = new Point ( 50 , 50 ) ;
e . Graphics . DrawImage ( il_profiles . Images [ e . Item . ImageIndex ] , profileImagePoint ) ;
// Draw the item text for views other than the Details view.
if ( lv_profiles_old . View ! = View . Details )
{
e . DrawText ( ) ;
}
}
// Draws subitem text and applies content-based formatting.
private void lv_profiles_DrawSubItem ( object sender ,
DrawListViewSubItemEventArgs e )
{
TextFormatFlags flags = TextFormatFlags . Left ;
using ( StringFormat sf = new StringFormat ( ) )
{
// Store the column text alignment, letting it default
// to Left if it has not been set to Center or Right.
switch ( e . Header . TextAlign )
{
case HorizontalAlignment . Center :
sf . Alignment = StringAlignment . Center ;
flags = TextFormatFlags . HorizontalCenter ;
break ;
case HorizontalAlignment . Right :
sf . Alignment = StringAlignment . Far ;
flags = TextFormatFlags . Right ;
break ;
}
// Draw the text and background for a subitem with a
// negative value.
double subItemValue ;
if ( e . ColumnIndex > 0 & & Double . TryParse (
e . SubItem . Text , NumberStyles . Currency ,
NumberFormatInfo . CurrentInfo , out subItemValue ) & &
subItemValue < 0 )
{
// Unless the item is selected, draw the standard
// background to make it stand out from the gradient.
if ( ( e . ItemState & ListViewItemStates . Selected ) = = 0 )
{
e . DrawBackground ( ) ;
}
// Draw the subitem text in red to highlight it.
e . Graphics . DrawString ( e . SubItem . Text ,
lv_profiles_old . Font , Brushes . Red , e . Bounds , sf ) ;
return ;
}
// Draw normal text for a subitem with a nonnegative
// or nonnumerical value.
e . DrawText ( flags ) ;
}
}
// Draws column headers.
private void lv_profiles_DrawColumnHeader ( object sender ,
DrawListViewColumnHeaderEventArgs e )
{
using ( StringFormat sf = new StringFormat ( ) )
{
// Store the column text alignment, letting it default
// to Left if it has not been set to Center or Right.
switch ( e . Header . TextAlign )
{
case HorizontalAlignment . Center :
sf . Alignment = StringAlignment . Center ;
break ;
case HorizontalAlignment . Right :
sf . Alignment = StringAlignment . Far ;
break ;
}
// Draw the standard header background.
e . DrawBackground ( ) ;
// Draw the header text.
using ( Font headerFont =
new Font ( "Helvetica" , 10 , FontStyle . Bold ) )
{
e . Graphics . DrawString ( e . Header . Text , headerFont ,
Brushes . Black , e . Bounds , sf ) ;
}
}
return ;
}
* /
2020-05-03 08:39:35 +00:00
public DisplayProfileForm ( )
{
InitializeComponent ( ) ;
2020-05-09 13:02:07 +00:00
//txt_profile_save_name.Validating += new System.ComponentModel.CancelEventHandler(txt_profile_save_name_Validating);
//lv_profiles.Groups.Add(GroupCurrent, Language.Current);
//lv_profiles.Groups.Add(GroupActive, Language.Active_Profiles);
//lv_profiles.Groups.Add(GroupSaved, Language.Saved_Profiles);
//lv_profiles.Groups.Add(GroupCurrent, Language.Current);
/ * lv_profiles_old . View = View . Tile ;
lv_profiles_old . Alignment = ListViewAlignment . Left ;
lv_profiles_old . OwnerDraw = true ;
lv_profiles_old . DrawItem + = lv_profiles_DrawItem ;
lv_profiles_old . DrawItem + = new DrawListViewItemEventHandler ( lv_profiles_DrawItem ) ;
lv_profiles_old . DrawSubItem + = new DrawListViewSubItemEventHandler ( lv_profiles_DrawSubItem ) ;
lv_profiles_old . DrawColumnHeader + = new DrawListViewColumnHeaderEventHandler ( lv_profiles_DrawColumnHeader ) ;
lv_profiles_old . TileSize = new Size ( ( lv_profiles_old . ClientSize . Height / 9 ) * 16 , lv_profiles_old . ClientSize . Height - ( SystemInformation . HorizontalScrollBarHeight + 4 ) ) ; * /
//Profile.LoadAllProfiles();
2020-05-03 08:39:35 +00:00
}
2020-05-09 13:02:07 +00:00
/ * private ListViewItem AddProfile ( Profile profile = null )
2020-05-03 08:39:35 +00:00
{
il_profiles . Images . Add (
new ProfileIcon ( profile ? ? Profile . GetCurrent ( ) ) . ToBitmap (
il_profiles . ImageSize . Width ,
il_profiles . ImageSize . Height ) ) ;
2020-05-09 13:02:07 +00:00
* //*return lv_profiles_old.Items.Add(new ListViewItem
2020-05-03 08:39:35 +00:00
{
2020-05-09 13:02:07 +00:00
Text = profile . Name ,
2020-05-03 08:39:35 +00:00
ImageIndex = il_profiles . Images . Count - 1 ,
2020-05-09 13:02:07 +00:00
Tag = profile
//Group = lv_profiles.Groups[profile == null ? GroupCurrent : (profile.IsActive ? GroupActive : GroupSaved)]
} ) ; * //*
} * /
2020-05-03 08:39:35 +00:00
private void Apply_Click ( object sender , EventArgs e )
{
2020-05-09 13:02:07 +00:00
/ * if ( dv_profile . Profile ! = null & &
lv_profiles_old . SelectedIndices . Count > 0 & &
lv_profiles_old . SelectedItems [ 0 ] . Tag ! = null )
2020-05-03 08:39:35 +00:00
{
if ( ! dv_profile . Profile . IsPossible )
{
MessageBox . Show ( this , Language . This_profile_is_currently_impossible_to_apply ,
Language . Apply_Profile ,
MessageBoxButtons . OK , MessageBoxIcon . Warning ) ;
return ;
}
Enabled = false ;
Visible = false ;
if (
new SplashForm (
( ) = >
{
Task . Factory . StartNew ( ( ) = > dv_profile . Profile . Apply ( ) , TaskCreationOptions . LongRunning ) ;
} , 3 , 30 ) . ShowDialog ( this ) ! =
DialogResult . Cancel )
{
ReloadProfiles ( ) ;
}
Visible = true ;
Enabled = true ;
Activate ( ) ;
2020-05-09 13:02:07 +00:00
} * /
2020-05-03 08:39:35 +00:00
}
private void Exit_Click ( object sender , EventArgs e )
{
this . Close ( ) ;
}
private void Delete_Click ( object sender , EventArgs e )
{
2020-05-09 13:02:07 +00:00
/ * if ( dv_profile . Profile ! = null & &
lv_profiles_old . SelectedIndices . Count > 0 & &
lv_profiles_old . SelectedItems [ 0 ] . Tag ! = null )
2020-05-03 08:39:35 +00:00
{
2020-05-09 13:02:07 +00:00
var selectedIndex = lv_profiles_old . SelectedIndices [ 0 ] ;
2020-05-03 08:39:35 +00:00
if (
MessageBox . Show ( this , Language . Are_you_sure , Language . Deletion , MessageBoxButtons . YesNo ,
MessageBoxIcon . Warning ) = =
DialogResult . Yes )
{
2020-05-09 13:02:07 +00:00
il_profiles . Images . RemoveAt ( lv_profiles_old . Items [ selectedIndex ] . ImageIndex ) ;
lv_profiles_old . Items . RemoveAt ( selectedIndex ) ;
2020-05-03 08:39:35 +00:00
SaveProfiles ( ) ;
}
2020-05-09 13:02:07 +00:00
} * /
2020-05-03 08:39:35 +00:00
ReloadProfiles ( ) ;
}
private void Edit_Click ( object sender , EventArgs e )
{
2020-05-09 13:02:07 +00:00
/ * if ( dv_profile . Profile ! = null & &
lv_profiles_old . SelectedIndices . Count > 0 & &
lv_profiles_old . SelectedItems [ 0 ] . Tag ! = null )
2020-05-03 08:39:35 +00:00
{
2020-05-09 13:02:07 +00:00
var selectedIndex = lv_profiles_old . SelectedIndices [ 0 ] ;
2020-05-03 08:39:35 +00:00
var editForm = new EditForm ( dv_profile . Profile ) ;
if ( editForm . ShowDialog ( this ) = = DialogResult . OK )
{
2020-05-09 13:02:07 +00:00
lv_profiles_old . Items [ selectedIndex ] . Tag = editForm . Profile ;
2020-05-03 08:39:35 +00:00
SaveProfiles ( ) ;
}
2020-05-09 13:02:07 +00:00
} * /
2020-05-03 08:39:35 +00:00
ReloadProfiles ( ) ;
}
2020-05-09 13:02:07 +00:00
/ * private void lv_profiles_AfterLabelEdit ( object sender , LabelEditEventArgs e )
2020-05-03 08:39:35 +00:00
{
2020-05-09 13:02:07 +00:00
var selectedProfile = ( Profile ) lv_profiles_old . Items [ e . Item ] . Tag ;
2020-05-03 08:39:35 +00:00
if ( selectedProfile = = null | | e . Label = = null | | selectedProfile . Name = = e . Label )
{
e . CancelEdit = true ;
return ;
}
if ( string . IsNullOrWhiteSpace ( e . Label ) | |
2020-05-09 13:02:07 +00:00
lv_profiles_old . Items . Cast < ListViewItem > ( )
2020-05-03 08:39:35 +00:00
. Select ( item = > item . Tag as Profile )
. Where ( profile = > profile ! = null )
. Any (
profile = >
! profile . Equals ( selectedProfile ) & &
profile . Name . Equals ( e . Label , StringComparison . InvariantCultureIgnoreCase ) ) )
{
MessageBox . Show ( this , Language . Invalid_or_duplicate_profile_name , Language . Validation ,
MessageBoxButtons . OK ,
MessageBoxIcon . Warning ) ;
e . CancelEdit = true ;
return ;
}
2020-05-09 13:02:07 +00:00
lv_profiles_old . Items [ e . Item ] . Text = selectedProfile . Name = e . Label ;
2020-05-03 08:39:35 +00:00
SaveProfiles ( ) ;
}
private void lv_profiles_BeforeLabelEdit ( object sender , LabelEditEventArgs e )
{
2020-05-09 13:02:07 +00:00
e . CancelEdit = ! ( lv_profiles_old . Items [ e . Item ] . Tag is Profile ) ;
2020-05-03 08:39:35 +00:00
}
private void lv_profiles_DoubleClick ( object sender , EventArgs e )
{
btn_edit . PerformClick ( ) ;
}
// Need to check why we did it this way rather than just using the
// list items themselves for clicking? That way we'd avoid selecting nothing...
private void lv_profiles_MouseUp ( object sender , MouseEventArgs e )
{
2020-05-09 13:02:07 +00:00
if ( e . Button = = MouseButtons . Right & & lv_profiles_old . SelectedItems . Count > 0 )
2020-05-03 08:39:35 +00:00
{
2020-05-09 13:02:07 +00:00
var itemRect = lv_profiles_old . GetItemRect ( lv_profiles_old . SelectedIndices [ 0 ] ) ;
2020-05-03 08:39:35 +00:00
if ( e . Location . X > itemRect . X & &
e . Location . X < = itemRect . Right & &
e . Location . Y > itemRect . Y & &
e . Location . Y < = itemRect . Bottom )
{
2020-05-09 13:02:07 +00:00
menu_profiles . Show ( lv_profiles_old , e . Location ) ;
2020-05-03 08:39:35 +00:00
}
}
}
private void lv_profiles_SelectedIndexChanged ( object sender , EventArgs e )
{
2020-05-09 13:02:07 +00:00
if ( lv_profiles_old . SelectedItems . Count > 0 )
2020-05-03 08:39:35 +00:00
{
2020-05-09 13:02:07 +00:00
dv_profile . Profile = lv_profiles_old . SelectedItems [ 0 ] . Tag as Profile ? ? Profile . CurrentProfile ;
2020-05-03 08:39:35 +00:00
}
else
{
dv_profile . Profile = null ;
}
// Set the Profile name
lbl_profile . Text = $"Selected Profile: {dv_profile.Profile?.Name ?? Language.None}" ;
// Turn on the buttons if the
if ( dv_profile . Profile ! = null ) {
2020-05-09 13:02:07 +00:00
if ( lv_profiles_old . SelectedItems [ 0 ] . Tag ! = null )
2020-05-03 08:39:35 +00:00
{
editToolStripMenuItem . Enabled = true ;
btn_edit . Enabled = true ;
deleteToolStripMenuItem . Enabled = true ;
btn_delete . Enabled = true ;
createShortcutToolStripMenuItem . Enabled = true ;
if ( ! dv_profile . Profile . IsActive )
{
applyToolStripMenuItem . Enabled = true ;
btn_apply . Enabled = true ;
}
}
cloneToolStripMenuItem . Enabled = true ;
btn_copy . Enabled = true ;
}
// Refresh the profiles again in case anything changed
RefreshProfilesStatus ( ) ;
2020-05-09 13:02:07 +00:00
} * /
2020-05-03 08:39:35 +00:00
private void MainForm_Activated ( object sender , EventArgs e )
{
// Reload the profiles in case we swapped to another program to change it
2020-05-09 13:02:07 +00:00
//ReloadProfiles();
2020-05-03 08:39:35 +00:00
// If nothing is selected then select the currently used profile
2020-05-09 13:02:07 +00:00
/ * if ( lv_profiles_old . SelectedItems . Count = = 0 )
2020-05-03 08:39:35 +00:00
{
2020-05-09 13:02:07 +00:00
lv_profiles_old . Items [ 0 ] . Selected = true ;
} * /
2020-05-03 08:39:35 +00:00
}
private void MainForm_Load ( object sender , EventArgs e )
{
2020-05-09 13:02:07 +00:00
//ReloadProfiles();
2020-05-03 08:39:35 +00:00
// Select the first item in the profiles list so pressing the buttons makes sense!
2020-05-09 13:02:07 +00:00
//lv_profiles_old.Items[0].Selected = true;
//lv_profiles.Items[0].Focused = true;
//lv_profiles.Items[0].Checked = true;
2020-05-10 10:47:18 +00:00
ImageListViewItem newItem ;
_savedProfiles = ( List < Profile > ) Profile . LoadAllProfiles ( ) ;
2020-05-09 13:02:07 +00:00
dv_profile . Profile = Profile . CurrentProfile ;
_selectedProfile = Profile . CurrentProfile ;
2020-05-10 10:47:18 +00:00
// Temporarily stop updating the saved_profiles listview
ilv_saved_profiles . SuspendLayout ( ) ;
if ( _savedProfiles . Count > 0 )
2020-05-09 13:02:07 +00:00
{
2020-05-10 10:47:18 +00:00
foreach ( Profile loadedProfile in _savedProfiles )
2020-05-09 13:02:07 +00:00
{
Bitmap profileIconImage = loadedProfile . ProfileIcon . ToBitmap (
il_profiles . ImageSize . Width ,
il_profiles . ImageSize . Height
) ;
2020-05-10 10:47:18 +00:00
newItem = new ImageListViewItem ( loadedProfile . SavedProfileCacheFilename , loadedProfile . Name ) ;
ilv_saved_profiles . Items . Add ( newItem ) ;
2020-05-09 13:02:07 +00:00
if ( Profile . CurrentProfile . Equals ( loadedProfile ) )
{
// We have already saved the current profile!
// so we need to show the current profile
// and make sure the current profile name has
// been updated with the name saved last time
// So as the current profile was already saved, we need to change
// the save button to a rename one
_saveOrRenameMode = "rename" ;
btn_save_or_rename . Text = "Rename to" ;
2020-05-10 10:47:18 +00:00
// And finally we need to select the currentProfile, as it's the one we're using now
newItem . Selected = true ;
2020-05-09 13:02:07 +00:00
}
else
{
// We haven't saved the current profile yet, but we've saved others!
// This is a new one
_saveOrRenameMode = "save" ;
btn_save_or_rename . Text = "Save As" ;
2020-05-10 10:47:18 +00:00
if ( ! loadedProfile . IsPossible )
{
// TODO mark the imagelist view netItem in some way
// to identify that it's not avalid profile, but
// still allow users to select it to rename it and
// see what the profile looks like.
}
2020-05-09 13:02:07 +00:00
}
2020-05-10 10:47:18 +00:00
2020-05-09 13:02:07 +00:00
}
2020-05-10 10:47:18 +00:00
ChangeSelectedProfile ( Profile . CurrentProfile ) ;
2020-05-09 13:02:07 +00:00
}
else
{
// If there are no profiles at all then we are starting from scratch!
// Show the profile in the DV window
// Use the current profile name in the label and the save name
_saveOrRenameMode = "save" ;
btn_save_or_rename . Text = "Save As" ;
2020-05-10 10:47:18 +00:00
ChangeSelectedProfile ( Profile . CurrentProfile ) ;
2020-05-09 13:02:07 +00:00
}
2020-05-10 10:47:18 +00:00
// Restart updating the saved_profiles listview
ilv_saved_profiles . ResumeLayout ( ) ;
2020-05-09 13:02:07 +00:00
//olv_profiles.LargeImageList = il_profiles;
// Start the ObjectListView list view
2020-05-10 10:47:18 +00:00
//ilv_saved_profiles.Items = il_profiles;
2020-05-03 08:39:35 +00:00
}
2020-05-10 10:47:18 +00:00
/ * public object ProfileImageGetter ( object rowObject )
{
Profile p = ( Profile ) rowObject ;
return
} ; * /
private void ChangeSelectedProfile ( Profile profile )
2020-05-09 13:02:07 +00:00
{
2020-05-10 10:47:18 +00:00
// We also need to load the saved profile name to show the user
ChangeSelectedProfileDetails ( profile . Name ) ;
// And we need to update the actual selected profile too!
_selectedProfile = profile ;
// And finally show the profile in the display view
dv_profile . Profile = profile ;
dv_profile . Refresh ( ) ;
}
2020-05-09 13:02:07 +00:00
2020-05-10 10:47:18 +00:00
private void ChangeSelectedProfileDetails ( string profileName )
{
// We also need to load the saved profile name to show the user
lbl_profile_shown . Text = profileName ;
txt_profile_save_name . Text = profileName ;
}
private bool IsValidFilename ( string testName )
{
string strTheseAreInvalidFileNameChars = new string ( Path . GetInvalidFileNameChars ( ) ) ;
Regex regInvalidFileName = new Regex ( "[" + Regex . Escape ( strTheseAreInvalidFileNameChars ) + "]" ) ;
if ( regInvalidFileName . IsMatch ( testName ) ) { return false ; } ;
return true ;
}
2020-05-09 13:02:07 +00:00
2020-05-03 08:39:35 +00:00
private void RefreshProfilesStatus ( )
{
Profile . RefreshActiveStatus ( ) ;
2020-05-09 13:02:07 +00:00
//lv_profiles_old.Invalidate();
2020-05-03 08:39:35 +00:00
}
private void ReloadProfiles ( )
{
2020-05-09 13:02:07 +00:00
//Profile.RefreshActiveStatus();
var profiles = Profile . LoadAllProfiles ( ) ;
//lv_profiles_old.Items.Clear();
//il_profiles.Images.Clear();
//olv_profiles
2020-05-03 08:39:35 +00:00
if ( ! profiles . Any ( profile = > profile . IsActive ) )
{
2020-05-09 13:02:07 +00:00
//AddProfile().Selected = true;
2020-05-03 08:39:35 +00:00
}
foreach ( var profile in profiles )
{
2020-05-09 13:02:07 +00:00
//AddProfile(profile);
2020-05-03 08:39:35 +00:00
}
2020-05-09 13:02:07 +00:00
//lv_profiles_old.SelectedIndices.Clear();
//lv_profiles_old.Invalidate();
2020-05-03 08:39:35 +00:00
}
2020-05-10 10:47:18 +00:00
private void btn_save_as_Click ( object sender , EventArgs e )
2020-05-09 13:02:07 +00:00
{
2020-05-10 10:47:18 +00:00
// Check the name is valid
if ( ! IsValidFilename ( txt_profile_save_name . Text ) )
{
MessageBox . Show ( "The profile name cannot contain the following characters:" + Path . GetInvalidFileNameChars ( ) , "Invalid characters in profile name" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
return ;
}
// If we're saving the current profile as a new item
// then we'll be in "save" mode
if ( _saveOrRenameMode = = "save" )
{
// Check we're not already using the name
foreach ( Profile savedProfile in Profile . AllSavedProfiles )
{
//if (String.Equals(txt_profile_save_name.Text, savedProfile.Name, StringComparison.InvariantCultureIgnoreCase))
if ( _selectedProfile . Equals ( Profile . CurrentProfile ) )
{
MessageBox . Show ( "Sorry, you can only have one saved display profile for each display configuration." , "Display profile already exists" , MessageBoxButtons . OK , MessageBoxIcon . Error ) ;
return ;
}
}
// We're in 'save' mode!
// Add the current profile to the list of profiles
_savedProfiles . Add ( _selectedProfile ) ;
// Then save the profiles so we always have it updated
Profile . SaveAllProfiles ( _savedProfiles ) ;
// Load the currentProfile image into the imagelistview
ImageListViewItem newItem = new ImageListViewItem ( _selectedProfile . SavedProfileCacheFilename , _selectedProfile . Name ) ;
newItem . Selected = true ;
ilv_saved_profiles . Items . Add ( newItem ) ;
//ilv_saved_profiles.Refresh();
/ * foreach ( ImageListViewItem myItem in ilv_saved_profiles . Items )
{
if ( _selectedProfile . Name = = myItem . Text )
{
myItem . Selected = true ;
myItem . Focused = true ;
}
} * /
}
else
{
// We're in 'rename' mode!
// THen rename the imagelistview item
string oldProfileName = _selectedProfile . Name ;
foreach ( ImageListViewItem myItem in ilv_saved_profiles . Items )
{
if ( myItem . Text = = oldProfileName )
{
myItem . Text = txt_profile_save_name . Text ;
}
}
// So lets rename the profile itself in the saved profiles
// and the selectprofile name too
foreach ( Profile savedProfile in _savedProfiles )
{
if ( savedProfile . Equals ( _selectedProfile ) )
{
_selectedProfile . Name = txt_profile_save_name . Text ;
savedProfile . Name = txt_profile_save_name . Text ;
ChangeSelectedProfileDetails ( _selectedProfile . Name ) ;
}
}
// TODO - delete the old PNG that we renamed from so we don't get a buildup of them!
// Then save all the profiles to lock it in
Profile . SaveAllProfiles ( _savedProfiles ) ;
}
// now update the profiles image listview
//ilv_saved_profiles.Refresh();
2020-05-09 13:02:07 +00:00
}
2020-05-10 10:47:18 +00:00
private void ilv_saved_profiles_ItemClick ( object sender , ItemClickEventArgs e )
2020-05-09 13:02:07 +00:00
{
foreach ( Profile savedProfile in _savedProfiles )
{
2020-05-10 10:47:18 +00:00
if ( savedProfile . Name = = e . Item . Text )
2020-05-09 13:02:07 +00:00
{
2020-05-10 10:47:18 +00:00
ChangeSelectedProfile ( savedProfile ) ;
2020-05-09 13:02:07 +00:00
}
}
2020-05-10 10:47:18 +00:00
}
2020-05-09 13:02:07 +00:00
2020-05-10 10:47:18 +00:00
private void btn_view_current_Click ( object sender , EventArgs e )
{
ChangeSelectedProfile ( Profile . CurrentProfile ) ;
2020-05-09 13:02:07 +00:00
}
/ * protected void txt_profile_save_name_Validating ( object sender , System . ComponentModel . CancelEventArgs e )
{
try
{
( txt_profile_save_name . Text ) ;
errorProvider1 . SetError ( txt_profile_save_name , "" ) ;
}
catch ( Exception ex )
{
errorProvider1 . SetError ( txt_profile_save_name , "Save name already used in another saved display profile." ) ;
}
} * /
2020-05-03 08:39:35 +00:00
}
}