private frmQueue queueWindow;\r
private delegate void updateStatusChanger();\r
private string lastAction = null;\r
+ public int maxWidth = 0;\r
+ public int maxHeight = 0;\r
\r
// Applicaiton Startup ************************************************\r
\r
MessageBox.Show("Unable to load the presets.dat file. Please select \"Update Built-in Presets\" from the Presets Menu \nMake sure you are running the program in Admin mode if running on Vista. See Windows FAQ for details!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);\r
else\r
MessageBox.Show("Presets have been updated!", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Information);\r
+\r
+ treeView_presets.ExpandAll();\r
}\r
private void mnu_delete_preset_Click(object sender, EventArgs e)\r
{\r
}\r
private void btn_new_preset_Click(object sender, EventArgs e)\r
{\r
+ // Remember each nodes expanded status so we can reload it\r
+ List<Boolean> nodeStatus = saveTreeViewState();\r
+ nodeStatus.Add(true);\r
+\r
Form preset = new frmAddPreset(this, queryGen.GenerateTheQuery(this), presetHandler);\r
preset.ShowDialog();\r
+\r
+ // Now reload the TreeView states\r
+ loadTreeViewStates(nodeStatus);\r
}\r
#endregion\r
\r
presetHandler.remove(treeView_presets.SelectedNode.Text);\r
\r
// Remember each nodes expanded status so we can reload it\r
- List<Boolean> nodeStatus = new List<Boolean>();\r
- foreach (TreeNode node in treeView_presets.Nodes)\r
- {\r
- nodeStatus.Add(node.IsExpanded);\r
- }\r
+ List<Boolean> nodeStatus = saveTreeViewState();\r
\r
+ // Now reload the preset panel\r
loadPresetPanel();\r
\r
- int i = 0;\r
- foreach (TreeNode node in treeView_presets.Nodes)\r
- {\r
- if (nodeStatus[i] == true)\r
- node.Expand();\r
-\r
- i++;\r
- }\r
+ // Now reload the TreeView states\r
+ loadTreeViewStates(nodeStatus);\r
}\r
treeView_presets.Select();\r
}\r
#endregion\r
\r
-\r
// MainWindow Components, Actions and Functions ***********************\r
-\r
#region Actions\r
\r
// ToolBar\r
//Source\r
private void btn_dvd_source_Click(object sender, EventArgs e)\r
{\r
+ // Enable the creation of chapter markers.\r
+ Check_ChapterMarkers.Enabled = true;\r
+\r
// Set the last action to scan. \r
// This is used for tracking which file to load in the activity window\r
lastAction = "scan";\r
MessageBox.Show("No Title(s) found. Please make sure you have selected a valid, non-copy protected source.\nYour Source may be copy protected, badly mastered or a format which HandBrake does not support. \nPlease refer to the Documentation and FAQ (see Help Menu).", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);\r
\r
lbl_encode.Text = "";\r
+\r
+ // Enable the creation of chapter markers if the file is an image of a dvd.\r
+ if (filename.ToLower().Contains(".iso"))\r
+ Check_ChapterMarkers.Enabled = true;\r
+ else\r
+ {\r
+ Check_ChapterMarkers.Enabled = false;\r
+ Check_ChapterMarkers.Checked = false;\r
+ data_chpt.Rows.Clear();\r
+ }\r
}\r
}\r
private void mnu_dvd_drive_Click(object sender, EventArgs e)\r
{\r
+ // Enable the creation of chapter markers.\r
+ Check_ChapterMarkers.Enabled = true;\r
+\r
// Set the last action to scan. \r
// This is used for tracking which file to load in the activity window\r
lastAction = "scan";\r
DVD_Save.FileName = DVD_Save.FileName.Replace(".mp4", "").Replace(".m4v", "").Replace(".mkv", "").Replace(".ogm", "").Replace(".avi", "");\r
\r
// Show the dialog and set the main form file path\r
- DVD_Save.ShowDialog();\r
- if (DVD_Save.FileName.StartsWith("\\"))\r
- MessageBox.Show("Sorry, HandBrake does not support UNC file paths. \nTry mounting the share as a network drive in My Computer", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
- else\r
- {\r
- setAudioByContainer(DVD_Save.FileName);\r
\r
- text_destination.Text = DVD_Save.FileName;\r
+ if (text_destination.Text.EndsWith(".mp4"))\r
+ DVD_Save.FilterIndex = 1;\r
+ else if (text_destination.Text.EndsWith(".m4v"))\r
+ DVD_Save.FilterIndex = 2;\r
+ else if (text_destination.Text.EndsWith(".avi"))\r
+ DVD_Save.FilterIndex = 3;\r
+ else if (text_destination.Text.EndsWith(".ogm"))\r
+ DVD_Save.FilterIndex = 4;\r
+ else if (text_destination.Text.EndsWith(".mkv"))\r
+ DVD_Save.FilterIndex = 5;\r
+\r
+ if (DVD_Save.ShowDialog() == DialogResult.OK)\r
+ {\r
+ if (DVD_Save.FileName.StartsWith("\\"))\r
+ MessageBox.Show("Sorry, HandBrake does not support UNC file paths. \nTry mounting the share as a network drive in My Computer", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);\r
+ else\r
+ {\r
+ setAudioByContainer(DVD_Save.FileName);\r
+ text_destination.Text = DVD_Save.FileName;\r
\r
- // Quicktime requires .m4v file for chapter markers to work. If checked, change the extension to .m4v (mp4 and m4v are the same thing)\r
- if (Check_ChapterMarkers.Checked)\r
- text_destination.Text = text_destination.Text.Replace(".mp4", ".m4v");\r
+ // Quicktime requires .m4v file for chapter markers to work. If checked, change the extension to .m4v (mp4 and m4v are the same thing)\r
+ if (Check_ChapterMarkers.Checked)\r
+ text_destination.Text = text_destination.Text.Replace(".mp4", ".m4v");\r
+ }\r
}\r
}\r
private void text_destination_TextChanged(object sender, EventArgs e)\r
private void drop_format_SelectedIndexChanged(object sender, EventArgs e)\r
{\r
if (drop_format.SelectedIndex == 0)\r
- text_destination.Text = hb_common_func.setExtension(text_destination.Text, ".mp4");\r
+ setExtension(".mp4");\r
else if (drop_format.SelectedIndex == 1)\r
- text_destination.Text = hb_common_func.setExtension(text_destination.Text, ".m4v");\r
+ setExtension(".m4v");\r
else if (drop_format.SelectedIndex == 2)\r
- text_destination.Text = hb_common_func.setExtension(text_destination.Text, ".mkv");\r
+ setExtension(".mkv");\r
else if (drop_format.SelectedIndex == 3)\r
- text_destination.Text = hb_common_func.setExtension(text_destination.Text, ".avi");\r
+ setExtension(".avi");\r
else if (drop_format.SelectedIndex == 4)\r
- text_destination.Text = hb_common_func.setExtension(text_destination.Text, ".ogm");\r
+ setExtension(".ogm");\r
+\r
}\r
\r
//Video Tab\r
//Picture Tab\r
private void text_width_TextChanged(object sender, EventArgs e)\r
{\r
+ maxWidth = 0; // Reset max width so that it's not using the MaxWidth -X. Quick hack to allow -X for preset usage.\r
+\r
int width;\r
Boolean parsed = int.TryParse(text_width.Text, out width);\r
if (parsed != false)\r
text_width.BackColor = Color.LightGreen;\r
\r
\r
- if (lbl_Aspect.Text != "Select a Title")\r
+ if (lbl_Aspect.Text != "Select a Title" && maxWidth != 0 && maxHeight != 0)\r
{\r
if (drp_anamorphic.Text == "None")\r
{\r
}\r
private void text_height_TextChanged(object sender, EventArgs e)\r
{\r
+ maxHeight = 0; // Reset max height so that it's not using the MaxHeight -Y. Quick hack to allow -Y for preset usage.\r
+\r
int height;\r
Boolean parsed = int.TryParse(text_height.Text, out height);\r
if (parsed != false)\r
private void btn_addPreset_Click(object sender, EventArgs e)\r
{\r
// Remember each nodes expanded status so we can reload it\r
- List<Boolean> nodeStatus = new List<Boolean>();\r
- foreach (TreeNode node in treeView_presets.Nodes)\r
- nodeStatus.Add(node.IsExpanded);\r
+ List<Boolean> nodeStatus = saveTreeViewState();\r
nodeStatus.Add(true);\r
\r
// Now add the new preset\r
Form preset = new frmAddPreset(this, queryGen.GenerateTheQuery(this), presetHandler);\r
preset.ShowDialog();\r
\r
- // And finally, re-expand any of the nodes if required\r
- int i = 0;\r
- foreach (TreeNode node in treeView_presets.Nodes)\r
- {\r
- if (nodeStatus[i] == true)\r
- node.Expand();\r
-\r
- i++;\r
- }\r
+ // Now reload the TreeView states\r
+ loadTreeViewStates(nodeStatus);\r
}\r
private void btn_removePreset_Click(object sender, EventArgs e)\r
{\r
{\r
if (treeView_presets.SelectedNode != null)\r
presetHandler.remove(treeView_presets.SelectedNode.Text);\r
- \r
+\r
// Remember each nodes expanded status so we can reload it\r
- List<Boolean> nodeStatus = new List<Boolean>();\r
- foreach (TreeNode node in treeView_presets.Nodes)\r
- nodeStatus.Add(node.IsExpanded);\r
+ List<Boolean> nodeStatus = saveTreeViewState();\r
\r
// Now reload the preset panel\r
loadPresetPanel();\r
\r
- // And finally, re-expand any of the nodes if required\r
- int i = 0;\r
- foreach (TreeNode node in treeView_presets.Nodes)\r
- {\r
- if (nodeStatus[i] == true)\r
- node.Expand();\r
-\r
- i++;\r
- }\r
+ // Now reload the TreeView states\r
+ loadTreeViewStates(nodeStatus);\r
}\r
treeView_presets.Select();\r
}\r
\r
#endregion\r
\r
+ #region Preset Expand / Collaspe\r
+ private List<Boolean> saveTreeViewState()\r
+ {\r
+ // Remember each nodes expanded status so we can reload it\r
+ List<Boolean> nodeStatus = new List<Boolean>();\r
+ foreach (TreeNode node in treeView_presets.Nodes)\r
+ {\r
+ nodeStatus.Add(node.IsExpanded);\r
+ foreach (TreeNode subNode in node.Nodes)\r
+ nodeStatus.Add(node.IsExpanded);\r
+ }\r
+ return nodeStatus;\r
+ }\r
+\r
+ private void loadTreeViewStates(List<Boolean> nodeStatus)\r
+ {\r
+ // And finally, re-expand any of the nodes if required\r
+ int i = 0;\r
+ foreach (TreeNode node in treeView_presets.Nodes)\r
+ {\r
+ if (nodeStatus[i] == true)\r
+ node.Expand();\r
+\r
+ foreach (TreeNode subNode in node.Nodes)\r
+ {\r
+ if (nodeStatus[i] == true)\r
+ subNode.Expand();\r
+ }\r
+\r
+ i++;\r
+ }\r
+ }\r
+ #endregion\r
+\r
#region Functions\r
private void loadNormalPreset()\r
{\r
+ treeView_presets.Nodes.Find("Normal", true);\r
+\r
foreach (TreeNode treenode in treeView_presets.Nodes)\r
{\r
- if (treenode.Text.ToString().Equals("Normal"))\r
- treeView_presets.SelectedNode = treeView_presets.Nodes[treenode.Index];\r
+ foreach (TreeNode node in treenode.Nodes)\r
+ {\r
+ if (node.Text.ToString().Equals("Normal"))\r
+ treeView_presets.SelectedNode = treeView_presets.Nodes[treenode.Index].Nodes[0];\r
+ }\r
}\r
}\r
+ /// <summary>\r
+ /// Take in a File destination and change it's file extension to a new Extension\r
+ /// </summary>\r
+ /// <param name="destination"></param>\r
+ /// <param name="newExtension"></param>\r
+ /// <returns>String of the new file path and extension</returns>\r
+ public void setExtension(string newExtension)\r
+ {\r
+ text_destination.Text = text_destination.Text.Replace(".mp4", newExtension);\r
+ text_destination.Text = text_destination.Text.Replace(".m4v", newExtension);\r
+ text_destination.Text = text_destination.Text.Replace(".mkv", newExtension);\r
+ text_destination.Text = text_destination.Text.Replace(".avi", newExtension);\r
+ text_destination.Text = text_destination.Text.Replace(".ogm", newExtension);\r
+ }\r
#endregion\r
\r
#region Drive Detection\r
}\r
\r
// After the encode is done, we may want to shutdown, suspend etc.\r
- cliObj.copyLog((string)state);\r
+ cliObj.addCLIQueryToLog((string)state);\r
+ cliObj.copyLog((string)state); // Make a copy of the log in the users desired location if necessary\r
cliObj.afterEncodeAction();\r
}\r
}\r