From: <nic...@us...> - 2015-01-09 18:01:59
|
Revision: 4911 http://sourceforge.net/p/mp-plugins/code/4911 Author: nicsergio Date: 2015-01-09 18:01:50 +0000 (Fri, 09 Jan 2015) Log Message: ----------- Modified Paths: -------------- trunk/plugins/ShortCuter&SkinEditor/Source/MediaPortalPlugins.sln trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Configuration/ShortCuterConfig.cs trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Configuration/SkinNavigatorConfig.cs trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Configuration/SkinNavigatorConfig.resx trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Resources/XmlFiles/DefaultConfig.xml trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuter.csproj Modified: trunk/plugins/ShortCuter&SkinEditor/Source/MediaPortalPlugins.sln =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/MediaPortalPlugins.sln 2015-01-09 11:36:56 UTC (rev 4910) +++ trunk/plugins/ShortCuter&SkinEditor/Source/MediaPortalPlugins.sln 2015-01-09 18:01:50 UTC (rev 4911) @@ -41,8 +41,8 @@ {4D76B200-01C9-48C6-BA04-DAF0845D56B0}.Release|x86.ActiveCfg = Release|Any CPU {20CEBE32-A39E-4A61-B2BD-90BF16E2AEE8}.Debug|Any CPU.ActiveCfg = Release|Any CPU {20CEBE32-A39E-4A61-B2BD-90BF16E2AEE8}.Debug|Any CPU.Build.0 = Release|Any CPU - {20CEBE32-A39E-4A61-B2BD-90BF16E2AEE8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU - {20CEBE32-A39E-4A61-B2BD-90BF16E2AEE8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU + {20CEBE32-A39E-4A61-B2BD-90BF16E2AEE8}.Debug|Mixed Platforms.ActiveCfg = Release|Any CPU + {20CEBE32-A39E-4A61-B2BD-90BF16E2AEE8}.Debug|Mixed Platforms.Build.0 = Release|Any CPU {20CEBE32-A39E-4A61-B2BD-90BF16E2AEE8}.Debug|x86.ActiveCfg = Release|Any CPU {20CEBE32-A39E-4A61-B2BD-90BF16E2AEE8}.Release|Any CPU.ActiveCfg = Release|Any CPU {20CEBE32-A39E-4A61-B2BD-90BF16E2AEE8}.Release|Any CPU.Build.0 = Release|Any CPU Modified: trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Configuration/ShortCuterConfig.cs =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Configuration/ShortCuterConfig.cs 2015-01-09 11:36:56 UTC (rev 4910) +++ trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Configuration/ShortCuterConfig.cs 2015-01-09 18:01:50 UTC (rev 4911) @@ -6,6 +6,7 @@ using MediaPortal.GUI.Library; using MediaPortal.Profile; using My.Common; +using System.Linq; namespace ShortCuter.Configuration { @@ -235,6 +236,13 @@ rowDownButton.Enabled = false; } } + private void AddSkinNavLink() //Aggiunta shortcut a SkinNavigator + { + ShortCut sc = new ShortCut(true); + myShortCuts.Items.Add(sc); + shortCutsDataGridView.CurrentCell = shortCutsDataGridView[0, shortCutsDataGridView.RowCount - 1]; + shortCutsDataGridView.Rows[shortCutsDataGridView.RowCount - 1].Selected = true; + } private bool Save() //Salvataggio configurazione plugin { myShortCuts.General.ForcingCapsLock = (LockKeys.LockKeyActions)EnumHelper.GetEnumFromDescription<LockKeys.LockKeyActions>(capsLockComboBox.SelectedItem.ToString()); @@ -407,11 +415,8 @@ } private void skinNavAddButton_Click(object sender, EventArgs e) { - ShortCut sc = new ShortCut(true); - myShortCuts.Items.Add(sc); - shortCutsDataGridView.CurrentCell = shortCutsDataGridView[0, shortCutsDataGridView.RowCount - 1]; - shortCutsDataGridView.Rows[shortCutsDataGridView.RowCount - 1].Selected = true; - } + AddSkinNavLink(); + } private void rowUpButton_Click(object sender, EventArgs e) { MoveItemList(true); @@ -483,8 +488,13 @@ } private void skinNavConfigButton_Click(object sender, EventArgs e) { - unsavedChanges = true; - new SkinNavigatorConfig(myShortCuts.Navigator, mySkin).ShowDialog(); + if (myShortCuts.Items.ToList().Find(x => x.IsNavigator) == null) + if (DialogHelper.Question("There is still no link to Skin Navigator, add one?")) + AddSkinNavLink(); + + SkinNavigatorConfig sNv = new SkinNavigatorConfig(myShortCuts.Navigator, mySkin); //--> creazione form per gestione configurazione SkinNavigator + sNv.ShowDialog(); //--> visualizzazione form + unsavedChanges |= sNv.UnsavedChanges; //--> combinazione stato modifiche non salvate (configurazione SkinNavigator) } private void infoPictureBox_Click(object sender, EventArgs e) { Modified: trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Configuration/SkinNavigatorConfig.cs =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Configuration/SkinNavigatorConfig.cs 2015-01-09 11:36:56 UTC (rev 4910) +++ trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Configuration/SkinNavigatorConfig.cs 2015-01-09 18:01:50 UTC (rev 4911) @@ -2,6 +2,7 @@ using System.Drawing; using My.Common; using System.IO; +using System.Linq; namespace ShortCuter.Configuration { @@ -10,17 +11,20 @@ #region Dati private SkinNavigator mySkinNavigator; //Istanza classe SkinNavigator (gestione configurazione) private Skin mySkin; //Istanza classe Skin (dati relativi alla skin di MediaPortal) - private bool ctrlInitializing = false; //Fase di inizializzazione controlli grafici - private bool propWriting = false; //Fase di scrittura proprietà nei controlli grafici - private bool listEditing = false; //Fase di editazione liste + private bool ctrlInitializing; //Fase di inizializzazione controlli grafici + private bool propWriting; //Fase di scrittura proprietà nei controlli grafici + private bool listEditing; //Fase di editazione liste + + private bool _unsavedChanges; //Presenza modifiche da salvare #endregion #region Costruttore internal SkinNavigatorConfig(SkinNavigator navigator, Skin skin) { InitializeComponent(); - mySkinNavigator = navigator; //Assegnazione classe SkinNavigator - mySkin = skin; //Assegnazione classe Skin + mySkinNavigator = navigator; //--> assegnazione classe SkinNavigator + mySkin = skin; //--> assegnazione classe Skin + _unsavedChanges = false; //--> nessuna modifica da salvare } #endregion @@ -29,8 +33,9 @@ { ctrlInitializing= true; skinItems.Populate(mySkin.SkinFiles, mySkin.SkinLinks, true, false); + dialogTypeComboBox.DataSource = EnumHelper.GetEnumDescriptions(typeof(SkinNavigator.DialogTypes)); destinationIconComboBox.DataSource = mySkin.SkinIcons; - dialogTypeComboBox.DataSource = EnumHelper.GetEnumDescriptions(typeof(SkinNavigator.DialogTypes)); + destinationIconComboBox.Text = string.Empty; ctrlInitializing = false; propWriting = true; @@ -42,62 +47,41 @@ groupsListBox.SelectedIndex = -1; groupsListBox.DataSource = mySkinNavigator.Items; - groupsListBox.SelectedIndex = 0; + if (mySkinNavigator.Items.Count > 0) + groupsListBox.SelectedIndex = 0; + else + RefreshNavigationListsControls(); propWriting = false; - toolTip.SetToolTip(skinItems, "Browse links and files of actual skin"); - toolTip.SetToolTip(resetButton, "Reset actual SkinNavigator settings and load the default configuration"); - - - - - - - /* - headerTextBox - showSeparatorCheckBox - showNumbersCheckBox - removeDuplicatesCheckBox - dialogTypeComboBox - groupsListBox - groupAddButton - groupRemoveButton - groupUpButton - groupDownButton - groupTextBox - windowsListBox - windowAddButton - windowRemoveButton - windowUpButton - windowDownButton - destinationsListBox - destinationAddButton - destinationRemoveButton - destinationUpButton - destinationDownButton - destinationTextBox - destinationWindowIdTextBox - destinationForceCheckBox - destinationLoadParameterTextBox - destinationIconComboBox - destinationIconBrowseButton - - toolTip.SetToolTip(skinItems, "Double click to set the link's parameter to shortcut"); - toolTip.SetToolTip(rowAddButton, "Add shortcut to list"); - toolTip.SetToolTip(rowRemoveButton, "Remove selected shortcut from list"); - toolTip.SetToolTip(rowCopyButton, "Copy selected shortcut to list"); - toolTip.SetToolTip(skinNavAddButton, "Add a shortcut to Skin Navigator in list"); - toolTip.SetToolTip(rowUpButton, "Move up selected shortcut in list"); - toolTip.SetToolTip(rowDownButton, "Move down selected shortcut in list"); - toolTip.SetToolTip(resetButton, "Reset actual settings and load the default configuration"); - toolTip.SetToolTip(saveButton, "Save actual settings"); - toolTip.SetToolTip(updateButton, "Save actual setting and close the application"); - toolTip.SetToolTip(capsLockComboBox, "Set forcing for Caps-Lock when MediaPortal starts (OFF is recommended)"); - toolTip.SetToolTip(numLockComboBox, "Set forcing for Num-Lock when MediaPortal starts"); - toolTip.SetToolTip(skinNavConfigButton, "Configure Skin Navigator"); - toolTip.SetToolTip(infoPictureBox, "Version information"); - */ - + toolTip.SetToolTip(skinItems, "Browse links and files of actual skin"); + toolTip.SetToolTip(resetButton, "Reset actual SkinNavigator settings and load the default configuration"); + toolTip.SetToolTip(headerTextBox, "Header title for SkinNavigator dialog window"); + toolTip.SetToolTip(showSeparatorCheckBox, "Show groups separator (only for custom menu)"); + toolTip.SetToolTip(showNumbersCheckBox, "Show items number in SkinNavigator dialog window"); + toolTip.SetToolTip(removeDuplicatesCheckBox, "Remove duplicated destination (present in more groups)"); + toolTip.SetToolTip(dialogTypeComboBox, "Choose window dialog type"); + toolTip.SetToolTip(groupsListBox, "List of navigation groups"); + toolTip.SetToolTip(groupAddButton, "Add navigation group to list"); + toolTip.SetToolTip(groupRemoveButton, "Remove selected navigation group from list"); + toolTip.SetToolTip(groupUpButton, "Move up selected navigation group in list"); + toolTip.SetToolTip(groupDownButton, "Move down selected navigation group in list"); + toolTip.SetToolTip(groupTextBox, "Navigation group title (not visible)"); + toolTip.SetToolTip(windowsListBox, "List of conditional windows for current navigation group"); + toolTip.SetToolTip(windowAddButton, "Add conditional window to list"); + toolTip.SetToolTip(windowRemoveButton, "Remove selected conditional window from list"); + toolTip.SetToolTip(windowUpButton, "Move up selected conditional window in list"); + toolTip.SetToolTip(windowDownButton, "Move down selected conditional window in list"); + toolTip.SetToolTip(destinationsListBox, "List of destinations for current navigation group"); + toolTip.SetToolTip(destinationAddButton, "Add destination to list"); + toolTip.SetToolTip(destinationRemoveButton, "Remove selected destination from list"); + toolTip.SetToolTip(destinationUpButton, "Move up selected destination in list"); + toolTip.SetToolTip(destinationDownButton, "Move down selected destination in list"); + toolTip.SetToolTip(destinationTextBox, "Destination caption visible in dialog window"); + toolTip.SetToolTip(destinationWindowIdTextBox, "Reset actual SkinNavigator settings and load the default configuration"); + toolTip.SetToolTip(destinationForceCheckBox, "Force destination if corresponding to current window (reccomended il LoadParameter is not null)"); + toolTip.SetToolTip(destinationLoadParameterTextBox, "Any parameter for load window (see destination plugin's documentation)"); + toolTip.SetToolTip(destinationIconComboBox, "Destination icon (only for custom menu)"); + toolTip.SetToolTip(destinationIconBrowseButton, "Choose an external icon for selected destination"); } private void ShowLinkProperties() //Visualizzazione proprietà link { @@ -133,18 +117,24 @@ groupDownButton.Enabled = (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count - 1); if ((groupsListBox.SelectedIndex < 0) || (groupsListBox.SelectedIndex > mySkinNavigator.Items.Count - 1)) { + groupTextBox.Text = string.Empty; + groupTextBox.Enabled = false; windowRemoveButton.Enabled = false; windowAddButton.Enabled = false; windowUpButton.Enabled = false; windowDownButton.Enabled = false; + windowsListBox.DataSource = null; destinationRemoveButton.Enabled = false; destinationAddButton.Enabled = false; destinationUpButton.Enabled = false; destinationDownButton.Enabled = false; + destinationsListBox.DataSource = null; + ClearDestination(); } else { groupTextBox.Text = mySkinNavigator.Items[groupsListBox.SelectedIndex].Caption; + groupTextBox.Enabled = true; windowsListBox.DataSource = mySkinNavigator.Items[groupsListBox.SelectedIndex].Windows; windowRemoveButton.Enabled = (mySkinNavigator.Items[groupsListBox.SelectedIndex].Windows.Count > 0); ; windowAddButton.Enabled = true; @@ -156,17 +146,100 @@ destinationAddButton.Enabled = true; destinationUpButton.Enabled = (destinationsListBox.SelectedIndex > 0); destinationDownButton.Enabled = (destinationsListBox.SelectedIndex < mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Count - 1); - if ((destinationsListBox.SelectedIndex >= 0) && (destinationsListBox.SelectedIndex < mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Count)) + if ((destinationsListBox.SelectedIndex < 0) || (destinationsListBox.SelectedIndex > mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Count - 1)) + ClearDestination(); + else { destinationTextBox.Text = mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations[destinationsListBox.SelectedIndex].Caption; + destinationTextBox.Enabled = true; destinationWindowIdTextBox.Text = mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations[destinationsListBox.SelectedIndex].WindowID.ToString(); destinationForceCheckBox.Checked = mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations[destinationsListBox.SelectedIndex].Force; + destinationForceCheckBox.Enabled = true; destinationLoadParameterTextBox.Text = mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations[destinationsListBox.SelectedIndex].LoadParameter; + destinationLoadParameterTextBox.Enabled = true; destinationIconComboBox.Text = mySkin.GetIconFile(mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations[destinationsListBox.SelectedIndex].Icon); + destinationIconComboBox.Enabled = true; } } propWriting = false; } + private void ClearDestination() //Pulizia proprietà destinazione + { + destinationTextBox.Text = string.Empty; + destinationTextBox.Enabled = false; + destinationWindowIdTextBox.Text = string.Empty; + destinationForceCheckBox.Checked = false; + destinationForceCheckBox.Enabled = false; + destinationLoadParameterTextBox.Text = string.Empty; + destinationLoadParameterTextBox.Enabled = false; + destinationIconComboBox.Text = string.Empty; + destinationIconComboBox.Enabled = false; + } + private void MoveGroupList(bool dirUp) //Spostamento gruppo di navigazione + { + if ((groupsListBox.SelectedIndex >= 0) && (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count)) + { + int index = groupsListBox.SelectedIndex; + SkinNavigator.Item nItem = mySkinNavigator.Items[index]; + + listEditing = true; + mySkinNavigator.Items.RemoveAt(index); + if (dirUp) + index--; + else + index++; + mySkinNavigator.Items.Insert(index, nItem); + groupsListBox.Focus(); + groupsListBox.SelectedIndex = index; + RefreshNavigationListsControls(); + listEditing = false; + _unsavedChanges = true; + } + } + private void MoveWindowList(bool dirUp) //Spostamento finestra di navigazione + { + if ((groupsListBox.SelectedIndex >= 0) && (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count) && + (windowsListBox.SelectedIndex >= 0) && (windowsListBox.SelectedIndex < mySkinNavigator.Items[groupsListBox.SelectedIndex].Windows.Count)) + { + int index = windowsListBox.SelectedIndex; + SkinNavigator.Item.Window nWnd = mySkinNavigator.Items[groupsListBox.SelectedIndex].Windows[index]; + + listEditing = true; + mySkinNavigator.Items[groupsListBox.SelectedIndex].Windows.RemoveAt(index); + if (dirUp) + index--; + else + index++; + mySkinNavigator.Items[groupsListBox.SelectedIndex].Windows.Insert(index, nWnd); + windowsListBox.Focus(); + windowsListBox.SelectedIndex = index; + RefreshNavigationListsControls(); + listEditing = false; + _unsavedChanges = true; + } + } + private void MoveDestinationList(bool dirUp) //Spostamento destinazione di navigazione + { + if ((groupsListBox.SelectedIndex >= 0) && (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count) && + (destinationsListBox.SelectedIndex >= 0) && (destinationsListBox.SelectedIndex < mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Count)) + { + int index = destinationsListBox.SelectedIndex; + SkinNavigator.Item.Destination nDst = mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations[index]; + + listEditing = true; + mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.RemoveAt(index); + if (dirUp) + index--; + else + index++; + mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Insert(index, nDst); + destinationsListBox.Focus(); + destinationsListBox.SelectedIndex = index; + RefreshNavigationListsControls(); + listEditing = false; + _unsavedChanges = true; + } + } #endregion #region Consumazione Eventi @@ -206,7 +279,7 @@ RefreshNavigationListsControls(); } #endregion - #region Eventi Controlli Gruppo di Navigazione + #region Eventi Liste Gruppo Corrente di Navigazione private void windowsListBox_Enter(object sender, System.EventArgs e) { windowsListBox.BackColor = Color.Aquamarine; @@ -237,28 +310,43 @@ #region Eventi Modifica Proprietà Generali private void headerTextBox_TextChanged(object sender, System.EventArgs e) { - if (!propWriting) + if (!propWriting) + { mySkinNavigator.General.MenuHeader = headerTextBox.Text; + _unsavedChanges = true; + } } private void showSeparatorCheckBox_CheckedChanged(object sender, System.EventArgs e) { - if (!propWriting) + if (!propWriting) + { mySkinNavigator.General.ShowSeparator = showSeparatorCheckBox.Checked; + _unsavedChanges = true; + } } private void showNumbersCheckBox_CheckedChanged(object sender, System.EventArgs e) { - if (!propWriting) + if (!propWriting) + { mySkinNavigator.General.ShowNumbers = showNumbersCheckBox.Checked; + _unsavedChanges = true; + } } private void removeDuplicatesCheckBox_CheckedChanged(object sender, System.EventArgs e) { - if (!propWriting) + if (!propWriting) + { mySkinNavigator.General.RemoveDuplicates = removeDuplicatesCheckBox.Checked; + _unsavedChanges = true; + } } private void dialogTypeComboBox_SelectedIndexChanged(object sender, System.EventArgs e) { - if (!ctrlInitializing && !propWriting) + if (!ctrlInitializing && !propWriting) + { mySkinNavigator.General.DialogType = (SkinNavigator.DialogTypes)EnumHelper.GetEnumFromDescription<SkinNavigator.DialogTypes>(dialogTypeComboBox.SelectedItem.ToString()); + _unsavedChanges = true; + } } #endregion #region Eventi Modifica Proprietà Gruppo @@ -266,16 +354,17 @@ { if (!propWriting && (groupsListBox.SelectedIndex >= 0) && (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count)) { - mySkinNavigator.Items[groupsListBox.SelectedIndex].Caption = groupTextBox.Text; + int index = groupsListBox.SelectedIndex; + mySkinNavigator.Items[index].Caption = groupTextBox.Text; + + SkinNavigator.Item nItem = mySkinNavigator.Items[index]; - SkinNavigator.Item nItem = new SkinNavigator.Item(); - nItem = mySkinNavigator.Items[groupsListBox.SelectedIndex]; listEditing = true; - int index = groupsListBox.SelectedIndex; mySkinNavigator.Items.RemoveAt(index); mySkinNavigator.Items.Insert(index, nItem); groupsListBox.SelectedIndex = index; listEditing = false; + _unsavedChanges = true; } } #endregion @@ -287,27 +376,34 @@ { mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations[destinationsListBox.SelectedIndex].Caption = destinationTextBox.Text; - SkinNavigator.Item.Destination nDest = new SkinNavigator.Item.Destination(); - nDest = mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations[destinationsListBox.SelectedIndex]; + SkinNavigator.Item.Destination nDst = new SkinNavigator.Item.Destination(); + nDst = mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations[destinationsListBox.SelectedIndex]; listEditing = true; int index = destinationsListBox.SelectedIndex; mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.RemoveAt(index); - mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Insert(index, nDest); + mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Insert(index, nDst); destinationsListBox.SelectedIndex = index; listEditing = false; + _unsavedChanges = true; } } private void destinationForceCheckBox_CheckedChanged(object sender, System.EventArgs e) { if (!propWriting && (groupsListBox.SelectedIndex >= 0) && (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count) && (destinationsListBox.SelectedIndex >= 0) && (destinationsListBox.SelectedIndex < mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Count)) + { mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations[destinationsListBox.SelectedIndex].Force = destinationForceCheckBox.Checked; + _unsavedChanges = true; + } } private void destinationLoadParameterTextBox_TextChanged(object sender, System.EventArgs e) { if (!propWriting && (groupsListBox.SelectedIndex >= 0) && (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count) && (destinationsListBox.SelectedIndex >= 0) && (destinationsListBox.SelectedIndex < mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Count)) + { mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations[destinationsListBox.SelectedIndex].LoadParameter = destinationLoadParameterTextBox.Text; + _unsavedChanges = true; + } } private void destinationIconComboBox_TextChanged(object sender, System.EventArgs e) { @@ -316,7 +412,10 @@ if (!propWriting && (groupsListBox.SelectedIndex >= 0) && (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count) && (destinationsListBox.SelectedIndex >= 0) && (destinationsListBox.SelectedIndex < mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Count)) + { mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations[destinationsListBox.SelectedIndex].Icon = mySkin.GetIconPath(destinationIconComboBox.Text); + _unsavedChanges = true; + } if (destinationIconComboBox.Text.Length > 0) { @@ -349,55 +448,162 @@ #region Eventi Modifica Lista Gruppi di Navigazione private void groupAddButton_Click(object sender, System.EventArgs e) { + SkinNavigator.Item nItem = new SkinNavigator.Item(); + listEditing = true; + mySkinNavigator.Items.Add(nItem); + groupsListBox.SelectedIndex = mySkinNavigator.Items.Count - 1; + groupsListBox.Focus(); + RefreshNavigationListsControls(); + listEditing = false; + _unsavedChanges = true; } private void groupRemoveButton_Click(object sender, System.EventArgs e) { + if ((groupsListBox.SelectedIndex >= 0) && (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count)) + { + int index = groupsListBox.SelectedIndex; + listEditing = true; + mySkinNavigator.Items.RemoveAt(index); + groupsListBox.Focus(); + groupsListBox.SelectedIndex = ((index < mySkinNavigator.Items.Count) ? index : index - 1); + RefreshNavigationListsControls(); + listEditing = false; + _unsavedChanges = true; + } } private void groupUpButton_Click(object sender, System.EventArgs e) { - + MoveGroupList(true); } private void groupDownButton_Click(object sender, System.EventArgs e) { - + MoveGroupList(false); } #endregion #region Eventi Modifica Lista Finestre Gruppo di Navigazione private void windowAddButton_Click(object sender, System.EventArgs e) { + if ((groupsListBox.SelectedIndex >= 0) && (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count)) + { + SkinNavigator.Item.Window nWnd = new SkinNavigator.Item.Window(); + if (skinItems.SelectedIndex >= 0) + { + if (skinItems.SelectedTab == SkinItems.SkinItemsType.Files) + { + nWnd.WindowID = mySkin.SkinFiles[skinItems.SelectedIndex].Id; + nWnd.Caption = string.Format("[ID={0}] {1}", nWnd.WindowID.ToString(), mySkin.SkinFiles[skinItems.SelectedIndex].Name); + } + else + { + nWnd.WindowID = mySkin.SkinLinks[skinItems.SelectedIndex].WindowID; + nWnd.Caption = string.Format("[ID={0}] {1}", nWnd.WindowID.ToString(), mySkin.SkinLinks[skinItems.SelectedIndex].Caption); + } + } + //Controllo duplicazione finestre + if (mySkinNavigator.Items[groupsListBox.SelectedIndex].Windows.ToList().Find(x => x.WindowID == nWnd.WindowID) != null) + { + DialogHelper.Info("Window already present in list"); + return; + } + listEditing = true; + mySkinNavigator.Items[groupsListBox.SelectedIndex].Windows.Add(nWnd); + windowsListBox.SelectedIndex = mySkinNavigator.Items[groupsListBox.SelectedIndex].Windows.Count - 1; + windowsListBox.Focus(); + RefreshNavigationListsControls(); + listEditing = false; + _unsavedChanges = true; + } } private void windowRemoveButton_Click(object sender, System.EventArgs e) { + if ((groupsListBox.SelectedIndex >= 0) && (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count) && + (windowsListBox.SelectedIndex >= 0) && (windowsListBox.SelectedIndex < mySkinNavigator.Items[groupsListBox.SelectedIndex].Windows.Count)) + { + int index = windowsListBox.SelectedIndex; + listEditing = true; + mySkinNavigator.Items[groupsListBox.SelectedIndex].Windows.RemoveAt(index); + windowsListBox.Focus(); + windowsListBox.SelectedIndex = ((index < mySkinNavigator.Items[groupsListBox.SelectedIndex].Windows.Count) ? index : index - 1); + RefreshNavigationListsControls(); + listEditing = false; + _unsavedChanges = true; + } } private void windowUpButton_Click(object sender, System.EventArgs e) { - + MoveWindowList(true); } private void windowDownButton_Click(object sender, System.EventArgs e) { - + MoveWindowList(false); } #endregion #region Eventi Modifica Lista Destinazioni Gruppo di Navigazione private void destinationAddButton_Click(object sender, System.EventArgs e) { + if ((groupsListBox.SelectedIndex >= 0) && (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count)) + { + SkinNavigator.Item.Destination nDst = new SkinNavigator.Item.Destination(); + if (skinItems.SelectedIndex >= 0) + { + if (skinItems.SelectedTab == SkinItems.SkinItemsType.Files) + { + nDst.Caption = mySkin.SkinFiles[skinItems.SelectedIndex].Name; + nDst.WindowID = mySkin.SkinFiles[skinItems.SelectedIndex].Id; + } + else + { + nDst.Caption = mySkin.SkinLinks[skinItems.SelectedIndex].Caption; + nDst.WindowID = mySkin.SkinLinks[skinItems.SelectedIndex].WindowID; + nDst.LoadParameter = mySkin.SkinLinks[skinItems.SelectedIndex].LoadParameter; + if (nDst.LoadParameter.Length > 0) + nDst.Force = true; + nDst.Icon = mySkin.GetIconPath(mySkin.SkinLinks[skinItems.SelectedIndex].IconList); + } + } + //Controllo duplicazione destinazioni + if (mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.ToList().Find(x => x.WindowID == nDst.WindowID && x.LoadParameter == nDst.LoadParameter) != null) + { + DialogHelper.Info("Destination already present in list"); + return; + } + listEditing = true; + mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Add(nDst); + destinationsListBox.SelectedIndex = mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Count - 1; + destinationsListBox.Focus(); + RefreshNavigationListsControls(); + listEditing = false; + _unsavedChanges = true; + } } private void destinationRemoveButton_Click(object sender, System.EventArgs e) { + if ((groupsListBox.SelectedIndex >= 0) && (groupsListBox.SelectedIndex < mySkinNavigator.Items.Count) && + (destinationsListBox.SelectedIndex >= 0) && (destinationsListBox.SelectedIndex < mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Count)) + { + int index = destinationsListBox.SelectedIndex; + listEditing = true; + mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.RemoveAt(index); + destinationsListBox.Focus(); + destinationsListBox.SelectedIndex = ((index < mySkinNavigator.Items[groupsListBox.SelectedIndex].Destinations.Count) ? index : index - 1); + RefreshNavigationListsControls(); + listEditing = false; + _unsavedChanges = true; + } } private void destinationUpButton_Click(object sender, System.EventArgs e) { - + MoveDestinationList(true); } private void destinationDownButton_Click(object sender, System.EventArgs e) { - + MoveDestinationList(false); } #endregion private void resetButton_Click(object sender, System.EventArgs e) @@ -405,9 +611,14 @@ if (DialogHelper.Question("Skin Navigator configuration data will be overwritten...\nDo you want to proceed?")) { mySkinNavigator.LoadDefaults(); + _unsavedChanges = true; InitializeGUI(); } } #endregion + + #region Proprietà + public bool UnsavedChanges { get { return this._unsavedChanges; } } + #endregion } } Modified: trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Configuration/SkinNavigatorConfig.resx =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Configuration/SkinNavigatorConfig.resx 2015-01-09 11:36:56 UTC (rev 4910) +++ trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Configuration/SkinNavigatorConfig.resx 2015-01-09 18:01:50 UTC (rev 4911) @@ -271,7 +271,7 @@ <value>True</value> </metadata> <metadata name="iconOpenFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> - <value>15, 2</value> + <value>79, 3</value> </metadata> <metadata name="resetButton.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> @@ -280,7 +280,7 @@ <value>True</value> </metadata> <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"> - <value>169, 2</value> + <value>5, 2</value> </metadata> <metadata name="$this.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> <value>True</value> Modified: trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Resources/XmlFiles/DefaultConfig.xml =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Resources/XmlFiles/DefaultConfig.xml 2015-01-09 11:36:56 UTC (rev 4910) +++ trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/Resources/XmlFiles/DefaultConfig.xml 2015-01-09 18:01:50 UTC (rev 4911) @@ -181,61 +181,382 @@ <Return>0</Return> <SoundEffect>click.wav</SoundEffect> </Item> + <Item> + <Caption>Skin Navigator</Caption> + <Key>N</Key> + <Ctrl>1</Ctrl> + <Alt>0</Alt> + <Shift>1</Shift> + <WindowID>-999</WindowID> + <LoadParameter /> + <Return>0</Return> + <SoundEffect>click.wav</SoundEffect> + </Item> </Items> <Navigator> <General> <MenuHeader>Skin Navigator</MenuHeader> <ShowSeparator>1</ShowSeparator> - <ShowNumbers>1</ShowNumbers> + <ShowNumbers>0</ShowNumbers> <RemoveDuplicates>1</RemoveDuplicates> - <DialogType>1</DialogType> + <DialogType>CustomList</DialogType> </General> <Items> <Item> - <Caption>Always</Caption> + <Caption>Generic</Caption> <Windows /> <Destinations> <Destination> - <Caption>Basic Home</Caption> + <Caption>BASIC HOME</Caption> <WindowID>35</WindowID> <LoadParameter /> <Force>0</Force> - <Icon /> + <Icon>ShortCuter\BasicHome.png</Icon> </Destination> <Destination> - <Caption>Movies</Caption> + <Caption>MOVIES</Caption> <WindowID>96742</WindowID> <LoadParameter /> <Force>0</Force> - <Icon /> + <Icon>ShortCuter\MovingPictures.png</Icon> </Destination> + <Destination> + <Caption>TV</Caption> + <WindowID>1</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\TV.png</Icon> + </Destination> + <Destination> + <Caption>MUSIC</Caption> + <WindowID>501</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Music.png</Icon> + </Destination> + <Destination> + <Caption>PICTURES</Caption> + <WindowID>2</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Pictures.png</Icon> + </Destination> </Destinations> </Item> <Item> - <Caption>Music</Caption> + <Caption>Movies</Caption> <Windows> <Window> + <Caption>[ID=96742] MOVIES</Caption> + <WindowID>96742</WindowID> + </Window> + <Window> + <Caption>[ID=6] VIDEOS</Caption> + <WindowID>6</WindowID> + </Window> + <Window> + <Caption>[ID=7986] FILMS</Caption> + <WindowID>7986</WindowID> + </Window> + <Window> + <Caption>[ID=25] VIDEOS (DB)</Caption> + <WindowID>25</WindowID> + </Window> + <Window> + <Caption>[ID=7111992] SHOWTIMES</Caption> + <WindowID>7111992</WindowID> + </Window> + <Window> + <Caption>[ID=87258] TRAKT</Caption> + <WindowID>87258</WindowID> + </Window> + <Window> + <Caption>[ID=2005] VIDEOS FULLSCREEN</Caption> + <WindowID>2005</WindowID> + </Window> + <Window> + <Caption>[ID=4755] ONLINE VIDEOS</Caption> + <WindowID>4755</WindowID> + </Window> + <Window> + <Caption>[ID=703] VIDEO SETTINGS</Caption> + <WindowID>703</WindowID> + </Window> + </Windows> + <Destinations> + <Destination> + <Caption>MOVIES</Caption> + <WindowID>96742</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\MovingPictures.png</Icon> + </Destination> + <Destination> + <Caption>VIDEOS</Caption> + <WindowID>6</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Movies.png</Icon> + </Destination> + <Destination> + <Caption>FILMS</Caption> + <WindowID>7986</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\MyFilms.png</Icon> + </Destination> + <Destination> + <Caption>VIDEOS (DB)</Caption> + <WindowID>25</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Movies.png</Icon> + </Destination> + <Destination> + <Caption>SHOWTIMES</Caption> + <WindowID>7111992</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\ShowTimes.png</Icon> + </Destination> + <Destination> + <Caption>TRAKT</Caption> + <WindowID>87258</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Trakt.png</Icon> + </Destination> + <Destination> + <Caption>ONLINE VIDEOS</Caption> + <WindowID>4755</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\OnlineVideos.png</Icon> + </Destination> + <Destination> + <Caption>VIDEO SETTINGS</Caption> + <WindowID>703</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Settings.png</Icon> + </Destination> + </Destinations> + </Item> + <Item> + <Caption>Trailers</Caption> + <Windows> + <Window> + <Caption>[ID=96742] MOVIES</Caption> + <WindowID>96742</WindowID> + </Window> + </Windows> + <Destinations> + <Destination> + <Caption>IMDB TRAILER</Caption> + <WindowID>4755</WindowID> + <LoadParameter>site:IMDb Movie Trailers|search:(#MovingPictures.SelectedMovie.imdb_id)|return:Locked</LoadParameter> + <Force>1</Force> + <Icon>ShortCuter\IMDb-MP.png</Icon> + </Destination> + <Destination> + <Caption>YOUTUBE TRAILER</Caption> + <WindowID>4755</WindowID> + <LoadParameter>site:YouTube|search:(#MovingPictures.SelectedMovie.title)|return:Locked</LoadParameter> + <Force>1</Force> + <Icon>ShortCuter\YouTube-MP.png</Icon> + </Destination> + </Destinations> + </Item> + <Item> + <Caption>TV</Caption> + <Windows> + <Window> + <Caption>[ID=1] TV</Caption> + <WindowID>1</WindowID> + </Window> + <Window> + <Caption>[ID=9811] SERIES</Caption> + <WindowID>9811</WindowID> + </Window> + <Window> + <Caption>[ID=603] TV RECS</Caption> + <WindowID>603</WindowID> + </Window> + <Window> + <Caption>[ID=600] TV GUIDE</Caption> + <WindowID>600</WindowID> + </Window> + <Window> + <Caption>[ID=7700] TELETEXT</Caption> + <WindowID>7700</WindowID> + </Window> + <Window> + <Caption>[ID=602] TV FULLSCREEN</Caption> + <WindowID>602</WindowID> + </Window> + <Window> + <Caption>[ID=700] TV SETTINGS</Caption> + <WindowID>700</WindowID> + </Window> + </Windows> + <Destinations> + <Destination> <Caption>TV</Caption> <WindowID>1</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\TV.png</Icon> + </Destination> + <Destination> + <Caption>SERIES</Caption> + <WindowID>9811</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\TvSeries.png</Icon> + </Destination> + <Destination> + <Caption>TV RECS</Caption> + <WindowID>603</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\TvRecs.png</Icon> + </Destination> + <Destination> + <Caption>TV GUIDE</Caption> + <WindowID>600</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\TvGuide.png</Icon> + </Destination> + <Destination> + <Caption>TELETEXT</Caption> + <WindowID>7700</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Teletext.png</Icon> + </Destination> + <Destination> + <Caption>TV SETTINGS</Caption> + <WindowID>700</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Settings.png</Icon> + </Destination> + </Destinations> + </Item> + <Item> + <Caption>Music</Caption> + <Windows> + <Window> + <Caption>[ID=501] MUSIC</Caption> + <WindowID>501</WindowID> </Window> + <Window> + <Caption>[ID=500] PLAYLISTS</Caption> + <WindowID>500</WindowID> + </Window> + <Window> + <Caption>[ID=510] PLAYING NOW</Caption> + <WindowID>510</WindowID> + </Window> + <Window> + <Caption>[ID=90478] LYRICS</Caption> + <WindowID>90478</WindowID> + </Window> + <Window> + <Caption>[ID=504] MUSIC (DB)</Caption> + <WindowID>504</WindowID> + </Window> + <Window> + <Caption>[ID=30] RADIO</Caption> + <WindowID>30</WindowID> + </Window> + <Window> + <Caption>[ID=14] MUSIC SETTINGS</Caption> + <WindowID>14</WindowID> + </Window> </Windows> <Destinations> <Destination> - <Caption>Music</Caption> + <Caption>MUSIC</Caption> <WindowID>501</WindowID> <LoadParameter /> <Force>0</Force> - <Icon /> + <Icon>ShortCuter\Music.png</Icon> </Destination> <Destination> - <Caption>Movies</Caption> - <WindowID>96742</WindowID> + <Caption>PLAYLISTS</Caption> + <WindowID>500</WindowID> <LoadParameter /> <Force>0</Force> - <Icon /> + <Icon>ShortCuter\MusicPlaylists.png</Icon> </Destination> + <Destination> + <Caption>PLAYING NOW</Caption> + <WindowID>510</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\MusicPlaying.png</Icon> + </Destination> + <Destination> + <Caption>LYRICS</Caption> + <WindowID>90478</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\MyLyrics.png</Icon> + </Destination> + <Destination> + <Caption>MUSIC (DB)</Caption> + <WindowID>504</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Music.png</Icon> + </Destination> + <Destination> + <Caption>RADIO</Caption> + <WindowID>30</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Radio.png</Icon> + </Destination> + <Destination> + <Caption>MUSIC SETTINGS</Caption> + <WindowID>14</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Settings.png</Icon> + </Destination> </Destinations> </Item> + <Item> + <Caption>Pictures</Caption> + <Windows> + <Window> + <Caption>[ID=2] PICTURES</Caption> + <WindowID>2</WindowID> + </Window> + <Window> + <Caption>[ID=12] PICTURE SETTINGS</Caption> + <WindowID>12</WindowID> + </Window> + </Windows> + <Destinations> + <Destination> + <Caption>PICTURES</Caption> + <WindowID>2</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Pictures.png</Icon> + </Destination> + <Destination> + <Caption>PICTURE SETTINGS</Caption> + <WindowID>12</WindowID> + <LoadParameter /> + <Force>0</Force> + <Icon>ShortCuter\Settings.png</Icon> + </Destination> + </Destinations> + </Item> </Items> </Navigator> </ShortCuter> \ No newline at end of file Modified: trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuter.csproj =================================================================== --- trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuter.csproj 2015-01-09 11:36:56 UTC (rev 4910) +++ trunk/plugins/ShortCuter&SkinEditor/Source/ShortCuter/ShortCuter.csproj 2015-01-09 18:01:50 UTC (rev 4911) @@ -6,7 +6,7 @@ <ProductVersion>8.0.30703</ProductVersion> <SchemaVersion>2.0</SchemaVersion> <ProjectGuid>{20CEBE32-A39E-4A61-B2BD-90BF16E2AEE8}</ProjectGuid> - <OutputType>WinExe</OutputType> + <OutputType>Library</OutputType> <AppDesignerFolder>Properties</AppDesignerFolder> <RootNamespace>ShortCuter</RootNamespace> <AssemblyName>ShortCuter</AssemblyName> @@ -40,7 +40,8 @@ <PlatformTarget>AnyCPU</PlatformTarget> </PropertyGroup> <PropertyGroup> - <StartupObject>ShortCuter.Program</StartupObject> + <StartupObject> + </StartupObject> </PropertyGroup> <PropertyGroup> <ApplicationIcon>Resources\Images\ShortCuter.ico</ApplicationIcon> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |