|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using Microsoft.Win32;
using System.IO;
using System.Xml.Linq;
using System.Windows.Media.Animation;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Threading;
namespace LocalizationSync
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
int noOfErrorsOnScreen = 0;
SourceItem sourceData = new SourceItem();
public MainWindow()
{
InitializeComponent();
TextBoxSource.DataContext = sourceData;
ListBoxDestination.DataContext = TranslationManager.Singleton;
AccessTextInfo.DataContext = TranslationManager.Singleton;
}
/// <summary>
/// Fired when source button is clicked
/// </summary>
private void ButtonSource_Click(object sender, RoutedEventArgs e)
{
try
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "Language Files (*.resx)|*.resx";
dialog.Multiselect = false;
if (dialog.ShowDialog() == true)
{
TextBoxSource.Text = dialog.FileName;
}
}
catch (System.Exception ex)
{
Log.Exception(ex);
TranslationManager.Singleton.Status = new Info("An error occurred during adding source language file", InfoType.Error);
DisplayInfo();
}
}
private void TextBoxSource_TextChanged(object sender, TextChangedEventArgs e)
{
TextBox sourceTextBox = sender as TextBox;
sourceData.Source = sourceTextBox.Text;
sourceTextBox.GetBindingExpression(TextBox.TextProperty).UpdateSource();
TranslationManager.Singleton.SourceTranslation.DocumentPath = sourceTextBox.Text;
}
/// <summary>
/// Fired when destination button is clicked
/// </summary>
private void ButtonDestination_Click(object sender, RoutedEventArgs e)
{
try
{
OpenFileDialog dialog = new OpenFileDialog();
dialog.Filter = "Language Files (*.resx)|*.resx";
dialog.Multiselect = true;
if (dialog.ShowDialog() == true)
{
TranslationManager.Singleton.DestinationElements.Clear();
foreach (string fileName in dialog.FileNames)
{
DestinationItem destinationItem = new DestinationItem(fileName);
TranslationManager.Singleton.DestinationElements.Add(destinationItem);
}
ListBoxDestination.ItemsSource = TranslationManager.Singleton.DestinationElements;
}
}
catch (System.Exception ex)
{
Log.Exception(ex);
TranslationManager.Singleton.Status = new Info("An error occurred when adding destination language file", InfoType.Error);
DisplayInfo();
}
}
/// <summary>
/// Fired when update button is clicked
/// </summary>
private void ButtonUpdate_Click(object sender, RoutedEventArgs e)
{
ListBoxDestination.GetBindingExpression(ListBox.ItemsSourceProperty).UpdateSource();
TextBoxSource.GetBindingExpression(TextBox.TextProperty).UpdateSource();
if (noOfErrorsOnScreen == 0)
{
StackPanelProcessing.Visibility = Visibility.Visible;
TranslationManager.Singleton.RunWorker();
}
}
/// <summary>
/// Fired when reset button is clicked
/// </summary>
private void ButtonReset_Click(object sender, RoutedEventArgs e)
{
ResetUI();
}
private void Validation_Error(object sender, ValidationErrorEventArgs e)
{
if (e.Action == ValidationErrorEventAction.Added)
noOfErrorsOnScreen++;
else
noOfErrorsOnScreen--;
}
private void Update_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = noOfErrorsOnScreen == 0;
e.Handled = true;
}
private void ResetUI()
{
sourceData.Source = null;
TranslationManager.Singleton.DestinationElements.Clear();
}
public void DisplayInfo()
{
StackPanelProcessing.Visibility = Visibility.Collapsed;
ProgressBarProcessing.Value = 0;
// Start final info storyboard animation (fade out effect)
Storyboard board = (Storyboard)this.FindResource("StoryboardInfo");
board.Begin();
}
public void WorkInProgress(int progressPercentage)
{
ProgressBarProcessing.Value = progressPercentage;
}
private void Manual_Click(object sender, RoutedEventArgs e)
{
ControlAbout.Visibility = Visibility.Collapsed;
ControlLicense.Visibility = Visibility.Collapsed;
ControlManual.Visibility = Visibility.Visible;
ControlManual.Focus();
}
private void About_Click(object sender, RoutedEventArgs e)
{
ControlManual.Visibility = Visibility.Collapsed;
ControlLicense.Visibility = Visibility.Collapsed;
ControlAbout.Visibility = Visibility.Visible;
ControlAbout.Focus();
}
private void License_Click(object sender, RoutedEventArgs e)
{
ControlManual.Visibility = Visibility.Collapsed;
ControlAbout.Visibility = Visibility.Collapsed;
ControlLicense.Visibility = Visibility.Visible;
ControlLicense.Focus();
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I have been a software developer for a while and still find this an interesting job.