first commit

This commit is contained in:
Beyhan Oğur
2026-09-03 04:45:36 +03:00
commit d5f52cc3d3
1038 changed files with 169579 additions and 0 deletions
@@ -0,0 +1,27 @@
using System;
using System.Globalization;
using System.Windows.Data;
namespace ClassicAssist.UI.Misc.ValueConverters
{
public class CellWidthValueConverter : IValueConverter
{
private double substractValue = 15;
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
if ( parameter != null )
{
substractValue = double.Parse( parameter.ToString() );
}
double? val = (double?) value - substractValue;
return val;
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
return (double?) value + substractValue;
}
}
}
@@ -0,0 +1,19 @@
using System;
using System.Globalization;
using System.Windows.Data;
namespace ClassicAssist.UI.Misc.ValueConverters
{
public class DateTimeToTimeSpanValueConverter : IValueConverter
{
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
return !( value is DateTime dt ) ? null : ( DateTime.Now - dt ).ToString();
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
throw new NotImplementedException();
}
}
}
@@ -0,0 +1,39 @@
using System;
using System.Globalization;
using System.Windows.Data;
namespace ClassicAssist.UI.Misc.ValueConverters
{
public class EnumMatchToBooleanConverter : IValueConverter
{
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
if ( value == null || parameter == null )
{
return false;
}
string checkValue = value.ToString();
string targetValue = parameter.ToString();
return checkValue.Equals( targetValue, StringComparison.InvariantCultureIgnoreCase );
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
if ( value == null || parameter == null )
{
return null;
}
bool useValue = (bool) value;
string targetValue = parameter.ToString();
if ( useValue )
{
return Enum.Parse( targetType, targetValue );
}
return null;
}
}
}
@@ -0,0 +1,48 @@
#region License
// Copyright (C) 2020 Reetus
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
#endregion
using System;
using System.Globalization;
using System.Windows.Data;
namespace ClassicAssist.UI.Misc.ValueConverters
{
public class HexToIntValueConverter : IValueConverter
{
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
if ( value is string val && val.StartsWith( "0x" ) )
{
return System.Convert.ToInt32( val, 16 );
}
return value;
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
if ( value is string val && val.StartsWith( "0x" ) )
{
return System.Convert.ToInt32( val, 16 );
}
return value;
}
}
}
@@ -0,0 +1,24 @@
using System;
using System.Globalization;
using System.Windows.Data;
namespace ClassicAssist.UI.Misc.ValueConverters
{
public class IntToHexStringValueConverter : IValueConverter
{
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
if ( value is int val )
{
return $"0x{val:x8}";
}
return value;
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
throw new NotImplementedException();
}
}
}
@@ -0,0 +1,27 @@
using System;
using System.Globalization;
using System.Windows.Data;
namespace ClassicAssist.UI.Misc.ValueConverters
{
public class InverseBooleanConverter : IValueConverter
{
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
try
{
bool testValue = (bool) value;
return !testValue; // or do whatever you need with this boolean
}
catch
{
return true;
} // or false
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
return Convert( value, targetType, parameter, culture );
}
}
}
@@ -0,0 +1,43 @@
#region License
// Copyright (C) 2020 Reetus
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
#endregion
using System;
using System.Globalization;
using System.Windows.Data;
namespace ClassicAssist.UI.Misc.ValueConverters
{
public class JoinArrayValueConverter : IValueConverter
{
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
if ( !( value is string[] array ) )
{
return null;
}
return string.Join( (string) parameter ?? ", ", array );
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
throw new NotImplementedException();
}
}
}
@@ -0,0 +1,42 @@
using System;
using System.Globalization;
using System.Windows.Data;
using ClassicAssist.Misc;
using ClassicAssist.UO.Data;
namespace ClassicAssist.UI.Misc.ValueConverters
{
public class LockStatusValueConverter : IValueConverter
{
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
if ( !( value is LockStatus ) )
{
return value;
}
LockStatus lockStatus = (LockStatus) value;
switch ( lockStatus )
{
case LockStatus.Up:
return Properties.Resources.arrow_up.ToImageSource();
case LockStatus.Down:
return Properties.Resources.arrow_down.ToImageSource();
case LockStatus.Locked:
return Properties.Resources.padlock.ToImageSource();
default:
throw new ArgumentOutOfRangeException();
}
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
throw new NotImplementedException();
}
}
}
@@ -0,0 +1,40 @@
#region License
// Copyright (C) 2020 Reetus
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
#endregion
using System;
using System.Globalization;
using System.Linq;
using System.Windows.Data;
namespace ClassicAssist.UI.Misc.ValueConverters
{
public class PriorityMultiValueConverter : IMultiValueConverter
{
//https://stackoverflow.com/questions/1915562/wpf-binding-fallbackvalue-set-to-binding
public object Convert( object[] values, Type targetType, object parameter, CultureInfo culture )
{
return values.FirstOrDefault( o => o != null );
}
public object[] ConvertBack( object value, Type[] targetTypes, object parameter, CultureInfo culture )
{
throw new NotImplementedException();
}
}
}
@@ -0,0 +1,36 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Windows.Data;
using ClassicAssist.Data.Skills;
using ClassicAssist.Misc;
using ClassicAssist.UO.Data;
namespace ClassicAssist.UI.Misc.ValueConverters
{
public class SetSkillLockData
{
public LockStatus LockStatus { get; set; }
public IEnumerable<SkillEntry> SkillEntries { get; set; }
}
public class SetSkillLockMultiValueConverter : IMultiValueConverter
{
public object Convert( object[] values, Type targetType, object parameter, CultureInfo culture )
{
IList items = (IList) ( (BindingProxy) values[0] ).Data;
IEnumerable<SkillEntry> skills = items.Cast<SkillEntry>();
LockStatus lockStatus = (LockStatus) values[1];
return new SetSkillLockData { SkillEntries = skills, LockStatus = lockStatus };
}
public object[] ConvertBack( object value, Type[] targetTypes, object parameter, CultureInfo culture )
{
throw new NotImplementedException();
}
}
}
@@ -0,0 +1,31 @@
using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using ClassicAssist.Shared;
namespace ClassicAssist.UI.Misc.ValueConverters
{
public class StringToResourceConverter : IValueConverter
{
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
if ( value is string )
{
if ( targetType.Equals( typeof( ImageSource ) ) )
{
return BitmapFrame.Create( Engine.GetResourceStream( (string) value ), BitmapCreateOptions.None,
BitmapCacheOption.OnLoad );
}
}
return value;
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
throw new NotImplementedException();
}
}
}
@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Windows.Data;
namespace ClassicAssist.UI.Misc.ValueConverters
{
/*
* https://stackoverflow.com/questions/2607490/is-there-a-way-to-chain-multiple-value-converters-in-xaml
*/
public class ValueConverterGroup : List<IValueConverter>, IValueConverter
{
#region IValueConverter Members
public object Convert( object value, Type targetType, object parameter, CultureInfo culture )
{
return this.Aggregate( value,
( current, converter ) => converter.Convert( current, targetType, parameter, culture ) );
}
public object ConvertBack( object value, Type targetType, object parameter, CultureInfo culture )
{
throw new NotImplementedException();
}
#endregion
}
}