diff options
Diffstat (limited to 'platform/windows/gsview/Convert.xaml.cs')
-rw-r--r-- | platform/windows/gsview/Convert.xaml.cs | 214 |
1 files changed, 214 insertions, 0 deletions
diff --git a/platform/windows/gsview/Convert.xaml.cs b/platform/windows/gsview/Convert.xaml.cs new file mode 100644 index 00000000..c2c3ec65 --- /dev/null +++ b/platform/windows/gsview/Convert.xaml.cs @@ -0,0 +1,214 @@ +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.Shapes; +using System.ComponentModel; +using System.Collections.ObjectModel; +using System.Text.RegularExpressions; + +namespace gsview +{ + public class Device : INotifyPropertyChanged + { + public String DeviceName + { + get; + internal set; + } + + public gsDevice_t DeviceType + { + get; + internal set; + } + + public bool SupportsMultiPage + { + get; + internal set; + } + + public bool MuPDFDevice + { + get; + internal set; + } + + public event PropertyChangedEventHandler PropertyChanged; + + public void PageRefresh() + { + if (PropertyChanged != null) + { + PropertyChanged(this, new PropertyChangedEventArgs("DeviceName")); + } + } + + public Device() + { + this.DeviceName = ""; + } + }; + + public class SelectPage : INotifyPropertyChanged + { + public int Page + { + get; + internal set; + } + + public int PageString + { + get; + internal set; + } + + public event PropertyChangedEventHandler PropertyChanged; + + public void PageRefresh() + { + if (PropertyChanged != null) + { + PropertyChanged(this, new PropertyChangedEventArgs("Page")); + PropertyChanged(this, new PropertyChangedEventArgs("PageString")); + } + } + }; + + /// <summary> + /// Interaction logic for Convert.xaml + /// </summary> + public partial class Convert : Window + { + List<Device> GSDevices; + List<SelectPage> ConvertPages; + + /* Callback to Main */ + internal delegate void ConvertCallBackMain(object gsObject); + internal event ConvertCallBackMain ConvertUpdateMain; + + public Convert(int num_pages) + { + InitializeComponent(); + GSDevices = new List<Device>(); + ConvertPages = new List<SelectPage>(); + SetDeviceList(); + SetPageList(num_pages); + xaml_DeviceList.ItemsSource = GSDevices; + xaml_PageList.ItemsSource = ConvertPages; + } + + public void SetDeviceList() + { + foreach (gsDevice_t device in Enum.GetValues(typeof(gsDevice_t))) + { + Device device_t = new Device(); + device_t.DeviceName = Enum.GetName(typeof(gsDevice_t), device); + device_t.DeviceType = device; + if (device > gsDevice_t.psdrgb) + device_t.SupportsMultiPage = true; + else + device_t.SupportsMultiPage = false; + if (device < gsDevice_t.bmp16) + device_t.MuPDFDevice = true; + else + device_t.MuPDFDevice = false; + GSDevices.Add(device_t); + } + } + + public void SetPageList(int num_pages) + { + for (int k = 1; k < num_pages + 1; k++ ) + { + SelectPage Spage = new SelectPage(); + Spage.Page = k; + Spage.PageString = k; + ConvertPages.Add(Spage); + } + } + + private void ConvertClick(object sender, RoutedEventArgs e) + { + ConvertUpdateMain(this); + } + + private void ConvertCancel(object sender, RoutedEventArgs e) + { + this.Close(); + } + + private void HelpConvert(object sender, RoutedEventArgs e) + { + + } + + private void AllPages(object sender, RoutedEventArgs e) + { + xaml_PageList.SelectAll(); + } + + private void EvenPages(object sender, RoutedEventArgs e) + { + /* First check if any are selected */ + var item = xaml_PageList.SelectedItem; + + /* If none are selected then get all the evens. otherwise just get + * all the evens of the pages that have been selected */ + if (item == null) + { + /* Turn on the evens */ + for (int kk = 1; kk < ConvertPages.Count; kk = kk + 2) + (xaml_PageList.ItemContainerGenerator.ContainerFromIndex(kk) as ListViewItem).IsSelected = true; + } + else + { + /* Turn off any odds */ + for (int kk = 0; kk < ConvertPages.Count; kk = kk + 2) + (xaml_PageList.ItemContainerGenerator.ContainerFromIndex(kk) as ListViewItem).IsSelected = false; + } + } + + private void OddPages(object sender, RoutedEventArgs e) + { + /* First check if any are selected */ + var item = xaml_PageList.SelectedItem; + + /* If none are selected then get all the odds. otherwise just get + all the odds of the pages that have been selected */ + if (item == null) + { + /* Turn on the odds */ + for (int kk = 0; kk < ConvertPages.Count; kk = kk + 2) + (xaml_PageList.ItemContainerGenerator.ContainerFromIndex(kk) as ListViewItem).IsSelected = true; + } + else + { + /* Turn off any evens */ + for (int kk = 1; kk < ConvertPages.Count; kk = kk + 2) + (xaml_PageList.ItemContainerGenerator.ContainerFromIndex(kk) as ListViewItem).IsSelected = false; + } + } + + /* Allow only numbers */ + private void PreviewInput(object sender, TextCompositionEventArgs e) + { + e.Handled = !IsTextAllowed(e.Text); + } + + private static bool IsTextAllowed(string text) + { + Regex regex = new Regex("[^0-9]+"); + return !regex.IsMatch(text); + } + } +} |