GARbro-mirror/AboutBox.xaml.cs

214 lines
7.8 KiB
C#
Raw Normal View History

2014-07-22 03:26:28 +08:00
/// Game Resource browser
//
// Copyright (C) 2014 by morkt
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to
// deal in the Software without restriction, including without limitation the
// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
// sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in
// all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
// IN THE SOFTWARE.
//
using System;
using System.Reflection;
using System.Windows;
using System.Windows.Data;
using GARbro.GUI.Properties;
using GARbro.GUI.Strings;
namespace GARbro.GUI
{
/// <summary>
/// Interaction logic for AboutBox.xaml
/// </summary>
public partial class AboutBox : Rnd.Windows.ModalWindow
{
public AboutBox()
{
InitializeComponent();
ArchiveFormats.ItemsSource = GameRes.FormatCatalog.Instance.ArcFormats;
ImageFormats.ItemsSource = GameRes.FormatCatalog.Instance.ImageFormats;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
#region Assembly Attribute Accessors
public string AssemblyTitle
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyTitleAttribute), false);
if (attributes.Length > 0)
{
AssemblyTitleAttribute titleAttribute = (AssemblyTitleAttribute)attributes[0];
if (titleAttribute.Title != "")
{
return titleAttribute.Title;
}
}
return System.IO.Path.GetFileNameWithoutExtension(Assembly.GetExecutingAssembly().CodeBase);
}
}
public string VersionString
{
get
{
return string.Format (guiStrings.MsgVersion, AssemblyVersion);
}
}
public string AssemblyVersion
{
get
{
return Assembly.GetExecutingAssembly().GetName().Version.ToString();
}
}
public string AssemblyDescription
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyDescriptionAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyDescriptionAttribute)attributes[0]).Description;
}
}
public string AssemblyProduct
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyProductAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyProductAttribute)attributes[0]).Product;
}
}
public string AssemblyCopyright
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCopyrightAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyCopyrightAttribute)attributes[0]).Copyright;
}
}
public string AssemblyCompany
{
get
{
object[] attributes = Assembly.GetExecutingAssembly().GetCustomAttributes(typeof(AssemblyCompanyAttribute), false);
if (attributes.Length == 0)
{
return "";
}
return ((AssemblyCompanyAttribute)attributes[0]).Company;
}
}
#endregion
}
public class BooleanToVisibiltyConverter : IValueConverter
{
/// <summary>Convert a boolean value to a Visibility value</summary>
public object Convert (object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool isVisible = (bool)value;
// If visibility is inverted by the converter parameter, then invert our value
if (IsVisibilityInverted (parameter))
isVisible = !isVisible;
return (isVisible ? Visibility.Visible : Visibility.Collapsed);
}
/// <summary>
/// Determine the visibility mode based on a converter parameter. This parameter is
/// of type Visibility, and specifies what visibility value to return when the boolean
/// value is true.
/// </summary>
private static Visibility GetVisibilityMode(object parameter)
{
// Default to Visible
Visibility mode = Visibility.Visible;
// If a parameter is specified, then we'll try to understand it as a Visibility value
if (parameter != null)
{
// If it's already a Visibility value, then just use it
if (parameter is Visibility)
{
mode = (Visibility)parameter;
}
else
{
// Let's try to parse the parameter as a Visibility value, throwing an exception when the parsing fails
try
{
mode = (Visibility)Enum.Parse(typeof(Visibility), parameter.ToString(), true);
}
catch (FormatException e)
{
throw new FormatException("Invalid Visibility specified as the ConverterParameter. Use Visible or Collapsed.", e);
}
}
}
// Return the detected mode
return mode;
}
/// <summary>
/// Determine whether or not visibility is inverted based on a converter parameter.
/// When the parameter is specified as Collapsed, that means that when the boolean value
/// is true, we should return Collapsed, which is inverted.
/// </summary>
private static bool IsVisibilityInverted(object parameter)
{
return (GetVisibilityMode(parameter) == Visibility.Collapsed);
}
/// <summary>
/// Support 2-way databinding of the VisibilityConverter, converting Visibility to a boolean
/// </summary>
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
bool isVisible = ((Visibility)value == Visibility.Visible);
// If visibility is inverted by the converter parameter, then invert our value
if (IsVisibilityInverted(parameter))
isVisible = !isVisible;
return isVisible;
}
}
}