using System; using System.Drawing; using System.ComponentModel; using System.Windows.Forms; using System.IO; using TeamXBMC.TranslatorCore; namespace TeamXBMC.Translator { /// /// Main form of the application. /// public sealed class MainForm : System.Windows.Forms.Form { private System.Windows.Forms.ListView listView1; private System.Windows.Forms.TabControl tabControl1; private System.Windows.Forms.TabPage tabPage1; private System.Windows.Forms.TabPage tabPage2; private System.Windows.Forms.TabPage tabPage3; private System.Windows.Forms.MainMenu mainMenu1; private System.Windows.Forms.MenuItem menuItemExit; private System.Windows.Forms.MenuItem menuItemFile; private System.Windows.Forms.MenuItem menuItem1; private System.Windows.Forms.MenuItem menuItemAbout; private System.Windows.Forms.MenuItem menuItem3; private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog1; private System.Windows.Forms.MenuItem menuItemSave; private System.Windows.Forms.MenuItem menuItem4; private System.Windows.Forms.MenuItem menuItem2; private System.Windows.Forms.ListView listView2; private System.Windows.Forms.ColumnHeader columnHeader1; private System.Windows.Forms.ColumnHeader columnHeader2; private System.Windows.Forms.ColumnHeader columnHeader3; private System.Windows.Forms.ListView listView3; private System.Windows.Forms.ColumnHeader columnHeader4; private System.Windows.Forms.ColumnHeader columnHeader5; private System.Windows.Forms.ColumnHeader columnHeader6; private System.Windows.Forms.ColumnHeader String; private System.Windows.Forms.ColumnHeader Original; private System.Windows.Forms.ColumnHeader StingId; private System.Windows.Forms.MenuItem menuItemOpen; private System.Windows.Forms.MenuItem menuItemLanguageFolder; private System.Windows.Forms.MenuItem menuItemEdit; private System.Windows.Forms.MenuItem menuItemFind; private System.ComponentModel.IContainer components=null; private System.Windows.Forms.MenuItem menuItemFindNext; private System.Windows.Forms.MenuItem menuItemLanguageInfo; private System.Windows.Forms.MenuItem menuItem6; private System.Windows.Forms.OpenFileDialog openFileDialog1; private System.Windows.Forms.MenuItem menuItemConvert; private System.Windows.Forms.SaveFileDialog saveFileDialog1; private System.Windows.Forms.MenuItem menuItemUserName; private System.Windows.Forms.MenuItem menuItemNew; private System.Windows.Forms.MenuItem menuItem7; private System.Windows.Forms.MenuItem menuItemOptions; private System.Windows.Forms.MenuItem menuItemTools; private System.Windows.Forms.MenuItem menuItemValidate; private System.Windows.Forms.MenuItem menuItemHelp; private System.Windows.Forms.MenuItem menuItem8; private FindForm findForm=new FindForm(); public MainForm() { // // Required for Windows Form Designer support // InitializeComponent(); // // TODO: Add any constructor code after InitializeComponent call // } /// /// Clean up any resources being used. /// protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// private void InitializeComponent() { System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(MainForm)); this.listView1 = new System.Windows.Forms.ListView(); this.StingId = new System.Windows.Forms.ColumnHeader(); this.String = new System.Windows.Forms.ColumnHeader(); this.Original = new System.Windows.Forms.ColumnHeader(); this.tabControl1 = new System.Windows.Forms.TabControl(); this.tabPage1 = new System.Windows.Forms.TabPage(); this.tabPage2 = new System.Windows.Forms.TabPage(); this.listView2 = new System.Windows.Forms.ListView(); this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); this.columnHeader2 = new System.Windows.Forms.ColumnHeader(); this.columnHeader3 = new System.Windows.Forms.ColumnHeader(); this.tabPage3 = new System.Windows.Forms.TabPage(); this.listView3 = new System.Windows.Forms.ListView(); this.columnHeader4 = new System.Windows.Forms.ColumnHeader(); this.columnHeader5 = new System.Windows.Forms.ColumnHeader(); this.columnHeader6 = new System.Windows.Forms.ColumnHeader(); this.mainMenu1 = new System.Windows.Forms.MainMenu(); this.menuItemFile = new System.Windows.Forms.MenuItem(); this.menuItemNew = new System.Windows.Forms.MenuItem(); this.menuItem7 = new System.Windows.Forms.MenuItem(); this.menuItemOpen = new System.Windows.Forms.MenuItem(); this.menuItem2 = new System.Windows.Forms.MenuItem(); this.menuItemSave = new System.Windows.Forms.MenuItem(); this.menuItem4 = new System.Windows.Forms.MenuItem(); this.menuItemLanguageFolder = new System.Windows.Forms.MenuItem(); this.menuItem3 = new System.Windows.Forms.MenuItem(); this.menuItemExit = new System.Windows.Forms.MenuItem(); this.menuItemEdit = new System.Windows.Forms.MenuItem(); this.menuItemFind = new System.Windows.Forms.MenuItem(); this.menuItemFindNext = new System.Windows.Forms.MenuItem(); this.menuItem6 = new System.Windows.Forms.MenuItem(); this.menuItemLanguageInfo = new System.Windows.Forms.MenuItem(); this.menuItemOptions = new System.Windows.Forms.MenuItem(); this.menuItemUserName = new System.Windows.Forms.MenuItem(); this.menuItemTools = new System.Windows.Forms.MenuItem(); this.menuItemValidate = new System.Windows.Forms.MenuItem(); this.menuItemConvert = new System.Windows.Forms.MenuItem(); this.menuItem1 = new System.Windows.Forms.MenuItem(); this.menuItemHelp = new System.Windows.Forms.MenuItem(); this.menuItem8 = new System.Windows.Forms.MenuItem(); this.menuItemAbout = new System.Windows.Forms.MenuItem(); this.folderBrowserDialog1 = new System.Windows.Forms.FolderBrowserDialog(); this.openFileDialog1 = new System.Windows.Forms.OpenFileDialog(); this.saveFileDialog1 = new System.Windows.Forms.SaveFileDialog(); this.tabControl1.SuspendLayout(); this.tabPage1.SuspendLayout(); this.tabPage2.SuspendLayout(); this.tabPage3.SuspendLayout(); this.SuspendLayout(); // // listView1 // this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.StingId, this.String, this.Original}); this.listView1.FullRowSelect = true; this.listView1.GridLines = true; this.listView1.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; this.listView1.HideSelection = false; this.listView1.LabelWrap = false; this.listView1.Location = new System.Drawing.Point(0, 0); this.listView1.MultiSelect = false; this.listView1.Name = "listView1"; this.listView1.Size = new System.Drawing.Size(696, 360); this.listView1.TabIndex = 0; this.listView1.View = System.Windows.Forms.View.Details; this.listView1.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.listView_KeyPress); this.listView1.DoubleClick += new System.EventHandler(this.listView_DoubleClick); // // StingId // this.StingId.Text = "String Id"; this.StingId.Width = 59; // // String // this.String.Text = "String"; this.String.Width = 308; // // Original // this.Original.Text = "Original"; this.Original.Width = 308; // // tabControl1 // this.tabControl1.Appearance = System.Windows.Forms.TabAppearance.FlatButtons; this.tabControl1.Controls.Add(this.tabPage1); this.tabControl1.Controls.Add(this.tabPage2); this.tabControl1.Controls.Add(this.tabPage3); this.tabControl1.ItemSize = new System.Drawing.Size(55, 21); this.tabControl1.Location = new System.Drawing.Point(8, 8); this.tabControl1.Multiline = true; this.tabControl1.Name = "tabControl1"; this.tabControl1.RightToLeft = System.Windows.Forms.RightToLeft.No; this.tabControl1.SelectedIndex = 0; this.tabControl1.Size = new System.Drawing.Size(704, 392); this.tabControl1.TabIndex = 0; // // tabPage1 // this.tabPage1.BackColor = System.Drawing.SystemColors.Control; this.tabPage1.Controls.Add(this.listView1); this.tabPage1.Location = new System.Drawing.Point(4, 25); this.tabPage1.Name = "tabPage1"; this.tabPage1.Size = new System.Drawing.Size(696, 363); this.tabPage1.TabIndex = 0; this.tabPage1.Text = "All Strings"; // // tabPage2 // this.tabPage2.BackColor = System.Drawing.SystemColors.Control; this.tabPage2.Controls.Add(this.listView2); this.tabPage2.Location = new System.Drawing.Point(4, 25); this.tabPage2.Name = "tabPage2"; this.tabPage2.Size = new System.Drawing.Size(696, 363); this.tabPage2.TabIndex = 1; this.tabPage2.Text = "Untranslated"; // // listView2 // this.listView2.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.columnHeader1, this.columnHeader2, this.columnHeader3}); this.listView2.FullRowSelect = true; this.listView2.GridLines = true; this.listView2.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; this.listView2.HideSelection = false; this.listView2.LabelWrap = false; this.listView2.Location = new System.Drawing.Point(0, 0); this.listView2.MultiSelect = false; this.listView2.Name = "listView2"; this.listView2.Size = new System.Drawing.Size(696, 360); this.listView2.TabIndex = 1; this.listView2.View = System.Windows.Forms.View.Details; this.listView2.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.listView_KeyPress); this.listView2.DoubleClick += new System.EventHandler(this.listView_DoubleClick); // // columnHeader1 // this.columnHeader1.Text = "String Id"; this.columnHeader1.Width = 59; // // columnHeader2 // this.columnHeader2.Text = "String"; this.columnHeader2.Width = 308; // // columnHeader3 // this.columnHeader3.Text = "Original"; this.columnHeader3.Width = 308; // // tabPage3 // this.tabPage3.BackColor = System.Drawing.SystemColors.Control; this.tabPage3.Controls.Add(this.listView3); this.tabPage3.Location = new System.Drawing.Point(4, 25); this.tabPage3.Name = "tabPage3"; this.tabPage3.Size = new System.Drawing.Size(696, 363); this.tabPage3.TabIndex = 2; this.tabPage3.Text = "Changed"; // // listView3 // this.listView3.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { this.columnHeader4, this.columnHeader5, this.columnHeader6}); this.listView3.FullRowSelect = true; this.listView3.GridLines = true; this.listView3.HeaderStyle = System.Windows.Forms.ColumnHeaderStyle.Nonclickable; this.listView3.HideSelection = false; this.listView3.LabelWrap = false; this.listView3.Location = new System.Drawing.Point(0, 0); this.listView3.MultiSelect = false; this.listView3.Name = "listView3"; this.listView3.Size = new System.Drawing.Size(696, 360); this.listView3.TabIndex = 1; this.listView3.View = System.Windows.Forms.View.Details; this.listView3.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.listView_KeyPress); this.listView3.DoubleClick += new System.EventHandler(this.listView_DoubleClick); // // columnHeader4 // this.columnHeader4.Text = "String Id"; this.columnHeader4.Width = 59; // // columnHeader5 // this.columnHeader5.Text = "String"; this.columnHeader5.Width = 308; // // columnHeader6 // this.columnHeader6.Text = "Original"; this.columnHeader6.Width = 308; // // mainMenu1 // this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItemFile, this.menuItemEdit, this.menuItemOptions, this.menuItemTools, this.menuItem1}); // // menuItemFile // this.menuItemFile.Index = 0; this.menuItemFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItemNew, this.menuItem7, this.menuItemOpen, this.menuItem2, this.menuItemSave, this.menuItem4, this.menuItemLanguageFolder, this.menuItem3, this.menuItemExit}); this.menuItemFile.Text = "&File"; // // menuItemNew // this.menuItemNew.Index = 0; this.menuItemNew.Shortcut = System.Windows.Forms.Shortcut.CtrlN; this.menuItemNew.Text = "&New Language..."; this.menuItemNew.Click += new System.EventHandler(this.menuItemNew_Click); // // menuItem7 // this.menuItem7.Index = 1; this.menuItem7.Text = "-"; // // menuItemOpen // this.menuItemOpen.Index = 2; this.menuItemOpen.Shortcut = System.Windows.Forms.Shortcut.CtrlO; this.menuItemOpen.Text = "&Open Language..."; this.menuItemOpen.Click += new System.EventHandler(this.menuItemOpen_Click); // // menuItem2 // this.menuItem2.Index = 3; this.menuItem2.Text = "-"; // // menuItemSave // this.menuItemSave.Index = 4; this.menuItemSave.Shortcut = System.Windows.Forms.Shortcut.CtrlS; this.menuItemSave.Text = "&Save"; this.menuItemSave.Click += new System.EventHandler(this.menuItemSave_Click); // // menuItem4 // this.menuItem4.Index = 5; this.menuItem4.Text = "-"; // // menuItemLanguageFolder // this.menuItemLanguageFolder.Index = 6; this.menuItemLanguageFolder.Text = "Set &Language Folder..."; this.menuItemLanguageFolder.Click += new System.EventHandler(this.menuItemLanguageFolder_Click); // // menuItem3 // this.menuItem3.Index = 7; this.menuItem3.Text = "-"; // // menuItemExit // this.menuItemExit.Index = 8; this.menuItemExit.Shortcut = System.Windows.Forms.Shortcut.AltF4; this.menuItemExit.Text = "&Exit"; this.menuItemExit.Click += new System.EventHandler(this.menuItemExit_Click); // // menuItemEdit // this.menuItemEdit.Index = 1; this.menuItemEdit.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItemFind, this.menuItemFindNext, this.menuItem6, this.menuItemLanguageInfo}); this.menuItemEdit.Text = "&Edit"; // // menuItemFind // this.menuItemFind.Index = 0; this.menuItemFind.Shortcut = System.Windows.Forms.Shortcut.CtrlF; this.menuItemFind.Text = "&Find..."; this.menuItemFind.Click += new System.EventHandler(this.menuItemFind_Click); // // menuItemFindNext // this.menuItemFindNext.Enabled = false; this.menuItemFindNext.Index = 1; this.menuItemFindNext.Shortcut = System.Windows.Forms.Shortcut.F3; this.menuItemFindNext.Text = "Find &Next"; this.menuItemFindNext.Click += new System.EventHandler(this.menuItemFindNext_Click); // // menuItem6 // this.menuItem6.Index = 2; this.menuItem6.Text = "-"; // // menuItemLanguageInfo // this.menuItemLanguageInfo.Index = 3; this.menuItemLanguageInfo.Text = "Language &Settings..."; this.menuItemLanguageInfo.Click += new System.EventHandler(this.menuItemLanguageInfo_Click); // // menuItemOptions // this.menuItemOptions.Index = 2; this.menuItemOptions.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItemUserName}); this.menuItemOptions.Text = "&Options"; // // menuItemUserName // this.menuItemUserName.Index = 0; this.menuItemUserName.Text = "&Translator Name..."; this.menuItemUserName.Click += new System.EventHandler(this.menuItemUserName_Click); // // menuItemTools // this.menuItemTools.Index = 3; this.menuItemTools.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItemValidate, this.menuItemConvert}); this.menuItemTools.Text = "&Tools"; // // menuItemValidate // this.menuItemValidate.Index = 0; this.menuItemValidate.Text = "&Validate Language File..."; this.menuItemValidate.Click += new System.EventHandler(this.menuItemValidateFile_Click); // // menuItemConvert // this.menuItemConvert.Index = 1; this.menuItemConvert.Text = "&Convert Language File..."; this.menuItemConvert.Click += new System.EventHandler(this.menuItemConvert_Click); // // menuItem1 // this.menuItem1.Index = 4; this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] { this.menuItemHelp, this.menuItem8, this.menuItemAbout}); this.menuItem1.Text = "&?"; // // menuItemHelp // this.menuItemHelp.Index = 0; this.menuItemHelp.Text = "&Help..."; this.menuItemHelp.Click += new System.EventHandler(this.menuItemHelp_Click); // // menuItem8 // this.menuItem8.Index = 1; this.menuItem8.Text = "-"; // // menuItemAbout // this.menuItemAbout.Index = 2; this.menuItemAbout.Text = "&About..."; this.menuItemAbout.Click += new System.EventHandler(this.menuItemAbout_Click); // // openFileDialog1 // this.openFileDialog1.DefaultExt = "xml"; this.openFileDialog1.FileName = "strings.xml"; this.openFileDialog1.Filter = "Language File|strings.xml|All Files|*.*"; this.openFileDialog1.Title = "Choose the language file"; // // saveFileDialog1 // this.saveFileDialog1.FileName = "strings.xml"; this.saveFileDialog1.Filter = "Language File|strings.xml|All Files|*.*"; this.saveFileDialog1.Title = "Save converted file as"; // // MainForm // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(722, 411); this.Controls.Add(this.tabControl1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; this.Menu = this.mainMenu1; this.Name = "MainForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Team XBMC Translator"; this.Load += new System.EventHandler(this.MainForm_Load); this.Closing +=new CancelEventHandler(MainForm_Closing); this.tabControl1.ResumeLayout(false); this.tabPage1.ResumeLayout(false); this.tabPage2.ResumeLayout(false); this.tabPage3.ResumeLayout(false); this.ResumeLayout(false); } #endregion #region Application initialization /// /// The main entry point for the application. /// [STAThread] static void Main() { Application.EnableVisualStyles(); Application.DoEvents(); Application.Run(new MainForm()); } #endregion #region Form initialization /// /// Loaded the last edited language, if any /// private void MainForm_Load(object sender, System.EventArgs e) { Initialize(); } /// /// Check if we have to save the language file /// private void MainForm_Closing(object sender, CancelEventArgs e) { DialogResult result=ShouldSaveLanguageFile(); if (result==DialogResult.Yes) SaveLanguageFile(); else if (result==DialogResult.Cancel) e.Cancel=true; } /// /// Initializes the user interface /// private bool Initialize() { try { // disable menu items that are unsave // in an undefined state EnableMenuItems(false); // Reset the form Reset(); // Tell the TranslationManager to load the currently selected // language TranslationManager.Instance.Initialize(); } catch (TranslatorException e) { Settings.Instance.Language=""; // Failed to load language, remove the current one ShowMessageBox(BuildErrorMessageText(e), MessageBoxIcon.Error); return false; } // Fill listView with strings UpdateListViews(); if (Settings.Instance.Language=="" && Settings.Instance.LanguageFolder=="") { // No language folder and language available, disable menuItemNew menuItemNew.Enabled=false; } else { // Everything is fine enable all menuItems EnableMenuItems(true); } return true; } /// /// Resets the user interface /// private void Reset() { ClearListView(listView1); ClearListView(listView2); ClearListView(listView3); EnableMenuItems(false); } /// /// Disables/enalbes the menu items /// void EnableMenuItems(bool enabled) { menuItemNew.Enabled=true; menuItemSave.Enabled=enabled; menuItemLanguageInfo.Enabled=enabled; menuItemFind.Enabled=enabled; menuItemFindNext.Enabled=false; } #endregion #region Error presentation /// /// Shows a predefined error message box /// private void ShowMessageBox(string message, MessageBoxIcon icon) { MessageBox.Show(message, Application.ProductName, MessageBoxButtons.OK, icon); } /// /// Construct an error message text from a TranslatorException /// private string BuildErrorMessageText(TranslatorException exception) { string message="The following error occured:\n"; message+=exception.Message; if (exception.InnerException!=null) { message+="\nAdditional Info:\n"; message+=exception.InnerException.Message; } return message; } #endregion #region List View control /// /// Update all listviews with its strings /// private void UpdateListViews() { UpdateListView(listView1, TranslationManager.Instance.All); UpdateListView(listView2, TranslationManager.Instance.Untranslated); UpdateListView(listView3, TranslationManager.Instance.Changed); } /// /// Update a listview with its strings /// private void UpdateListView(ListView listView, TranslatorArray strings) { listView.Columns[1].Text=TranslationManager.Instance.LanguageTranslated; listView.Columns[2].Text=TranslationManager.Instance.LanguageOriginal; foreach (TranslatorItem item in strings) { listView.Items.Add(new ListViewItemString(item)); } } /// /// Removes items from a listview /// private void ClearListView(ListView listView) { listView.Items.Clear(); } /// /// Shows the EditStringForm when a listview is double clicked /// void listView_DoubleClick(object sender, System.EventArgs e) { ShowEditForm((ListView)sender); } /// /// Shows the EditStringForm when enter is pressed in a listview /// void listView_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar==(char)13) { ShowEditForm((ListView)sender); } } /// /// Shows the EditStringForm for a certain listview /// void ShowEditForm(ListView listView) { if (listView.SelectedItems.Count>0) { ListViewItem item=listView.SelectedItems[0]; long stringId=Convert.ToInt32(item.SubItems[0].Text); EditStringForm form=new EditStringForm(); form.Translated=item.SubItems[1].Text; form.Original=item.SubItems[2].Text; if (form.ShowDialog(this)==DialogResult.Cancel) return; TranslatorItem translatorItem=null; TranslationManager.Instance.All.GetItemById(stringId, ref translatorItem); if (translatorItem==null) return; if (form.Translated=="") translatorItem.State=TranslationState.Untranslated; else translatorItem.State=TranslationState.Translated; translatorItem.StringTranslated.Text=form.Translated; } } #endregion #region Menu Item Handler File /// /// Creates a new language /// private void menuItemNew_Click(object sender, System.EventArgs e) { if (Settings.Instance.LanguageFolder=="" && !ShowFolderBrowser()) return; DialogResult result=ShouldSaveLanguageFile(); if (result==DialogResult.Yes) SaveLanguageFile(); else if (result==DialogResult.Cancel) return; NewLanguageForm form=new NewLanguageForm(); if (form.ShowDialog()==DialogResult.Cancel) return; try { TranslationManager.Instance.CreateLanguage(form.LanguageName); } catch (TranslatorException ex) { ShowMessageBox(BuildErrorMessageText(ex), MessageBoxIcon.Error); return; } Settings.Instance.Language=form.LanguageName; Initialize(); } /// /// Opens a language /// private void menuItemOpen_Click(object sender, System.EventArgs e) { if (Settings.Instance.LanguageFolder=="" && !ShowFolderBrowser()) return; DialogResult result=ShouldSaveLanguageFile(); if (result==DialogResult.Yes) SaveLanguageFile(); else if (result==DialogResult.Cancel) return; ChooseLanguageForm form=new ChooseLanguageForm(); if (form.ShowDialog()==DialogResult.Cancel) return; Initialize(); } /// /// Opens a folder browser to choose the language folder. /// It also tests if the folder selected contains the english folder, /// if not it will prompt again. Returns false if the user cancels out. /// private bool ShowFolderBrowser() { folderBrowserDialog1.Description="Please choose the root folder where your language files are located. This folder needs at least the english language folder."; folderBrowserDialog1.SelectedPath=Settings.Instance.LanguageFolder; folderBrowserDialog1.ShowNewFolderButton=false; if (folderBrowserDialog1.ShowDialog()!=DialogResult.Cancel) { Settings.Instance.LanguageFolder=folderBrowserDialog1.SelectedPath; if (!File.Exists(Settings.Instance.FilenameOriginal)) { Settings.Instance.LanguageFolder=""; ShowMessageBox("The english language folder was not found in this directory.\nPlease choose another folder.", MessageBoxIcon.Error); return ShowFolderBrowser(); } return true; } return false; } /// /// Saves the language file /// private void menuItemSave_Click(object sender, System.EventArgs e) { SaveLanguageFile(); } /// /// Asks the user if he wants to save the language file is it's modified /// private DialogResult ShouldSaveLanguageFile() { if (TranslationManager.Instance.IsModified) { string message="The language file has been modified.\n\nSave changes?"; return MessageBox.Show(message, Application.ProductName, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); } return DialogResult.No; } /// /// Saves the active language file /// private void SaveLanguageFile() { try { TranslationManager.Instance.SaveTranslated(); } catch (TranslatorException ex) { ShowMessageBox(BuildErrorMessageText(ex), MessageBoxIcon.Error); } } /// /// Sets the language folder /// private void menuItemLanguageFolder_Click(object sender, System.EventArgs e) { DialogResult result=ShouldSaveLanguageFile(); if (result==DialogResult.Yes) SaveLanguageFile(); else if (result==DialogResult.Cancel) return; if (ShowFolderBrowser()) Initialize(); } /// /// Exits the application /// private void menuItemExit_Click(object sender, System.EventArgs e) { DialogResult result=ShouldSaveLanguageFile(); if (result==DialogResult.Yes) SaveLanguageFile(); else if (result==DialogResult.Cancel) return; Application.Exit(); } #endregion #region Menu Item Handler Edit /// /// Edits the langinfo of the current language /// private void menuItemLanguageInfo_Click(object sender, System.EventArgs e) { try { LanguageInfoForm form=new LanguageInfoForm(); form.ShowDialog(); } catch(TranslatorException ex) { ShowMessageBox(BuildErrorMessageText(ex), MessageBoxIcon.Error); } } /// /// Shows the FindForm to search in the active listView /// private void menuItemFind_Click(object sender, System.EventArgs e) { findForm.ShowDialog(); if (findForm.DialogResult==DialogResult.Cancel) return; menuItemFindNext_Click(sender, e); menuItemFindNext.Enabled=true; } /// /// Searches the active listView for the search criteria set with /// the FindForm. /// private void menuItemFindNext_Click(object sender, System.EventArgs e) { ListView listView=null; if (tabControl1.SelectedIndex==0) listView=listView1; else if (tabControl1.SelectedIndex==1) listView=listView2; else listView=listView3; if (listView==null) return; int startIndex=0; if (listView.SelectedIndices.Count>0) startIndex=listView.SelectedIndices[0]+1; string findText=findForm.MatchCase ? findForm.TextFind : findForm.TextFind.ToLower(); bool found=false; for (int i=startIndex; findForm.SearchDown ? i=0; i+=findForm.SearchDown ? 1 : -1) { ListViewItem item=listView.Items[i]; foreach (ListViewItem.ListViewSubItem subItem in item.SubItems) { string text=findForm.MatchCase ? subItem.Text : subItem.Text.ToLower(); int pos=text.IndexOf(findText); if (pos>-1) { if (findForm.MatchWholeWord) { if (pos==0 && findText.Length==text.Length) { if (text!=findText) continue; } else if (pos==0) { if (Char.IsLetterOrDigit(text[pos+findText.Length])) continue; } else if (pos>0) { if (Char.IsLetterOrDigit(text[pos-1])) continue; if (text.Length>pos+findText.Length) { if (Char.IsLetterOrDigit(text[pos+findText.Length])) continue; } } } item.Selected=true; item.EnsureVisible(); found=true; break; } } if (found) break; } if (!found) { ShowMessageBox("\""+findForm.TextFind+"\" was not found.", MessageBoxIcon.Information); } } #endregion #region Menu Item Handler Options /// /// Shows the UserForm where the name and email of the translator can be set /// private void menuItemUserName_Click(object sender, System.EventArgs e) { UserForm form=new UserForm(); form.ShowDialog(); } #endregion #region Menu Item Handler Tools /// /// Checks if a language file is valid /// private void menuItemValidateFile_Click(object sender, System.EventArgs e) { openFileDialog1.InitialDirectory=Settings.Instance.LanguageFolder; if (openFileDialog1.ShowDialog()==DialogResult.Cancel) return; StringArray strings=new StringArray(); try { strings.Load(openFileDialog1.FileName); } catch(TranslatorException ex) { ShowMessageBox(BuildErrorMessageText(ex), MessageBoxIcon.Error); return; } ShowMessageBox("The file " + openFileDialog1.FileName + " is valid.", MessageBoxIcon.Information); } /// /// Converts a language file to the new format /// private void menuItemConvert_Click(object sender, System.EventArgs e) { openFileDialog1.InitialDirectory=Settings.Instance.LanguageFolder; if (openFileDialog1.ShowDialog()==DialogResult.Cancel) return; StringArray strings=new StringArray(); try { strings.Load(openFileDialog1.FileName); } catch(TranslatorException ex) { ShowMessageBox(BuildErrorMessageText(ex), MessageBoxIcon.Error); return; } saveFileDialog1.InitialDirectory=openFileDialog1.FileName.Substring(0, openFileDialog1.FileName.LastIndexOf(@"\")); if (saveFileDialog1.ShowDialog()==DialogResult.Cancel) return; try { string[] comment=new string[1]; comment[0]="$"+"Revision"+"$"; strings.Save(saveFileDialog1.FileName, comment); } catch(TranslatorException ex) { ShowMessageBox(BuildErrorMessageText(ex), MessageBoxIcon.Error); return; } MessageBox.Show("File "+saveFileDialog1.FileName+" was succesfully saved.", Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Information); } #endregion #region Menu Item Handler ? /// /// Opens the standard webbrowser and shows the help page of the online manual /// private void menuItemHelp_Click(object sender, System.EventArgs e) { System.Diagnostics.Process.Start("http://xbmc.org/wiki/index.php?title=XBMC_Translator"); } /// /// Shows the AboutForm /// private void menuItemAbout_Click(object sender, System.EventArgs e) { AboutForm form=new AboutForm(); form.ShowDialog(); } #endregion } }