/* * Copyright 2019 faddenSoft * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ using System; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks; 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; namespace SourceGenWPF.ProjWin { /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window, INotifyPropertyChanged { /// private MainController mUI; public MainWindow() { InitializeComponent(); // TODO: verify that RuntimeData dir is accessible this.DataContext = this; mUI = new MainController(this); codeListView.ItemsSource = new DisplayList(500); GridView gv = (GridView)codeListView.View; //gv.Columns[0].Width = 50; } /// /// INotifyPropertyChanged event /// public event PropertyChangedEventHandler PropertyChanged; /// /// Call this when a notification-worthy property changes value. /// /// The CallerMemberName attribute puts the calling property's name in the first arg. /// /// Name of property that changed. private void NotifyPropertyChanged([CallerMemberName] string propertyName = "") { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } private bool mShowCodeListView; /// /// Which panel are we showing, launchPanel or codeListView? /// public bool ShowCodeListView { get { return mShowCodeListView; } set { mShowCodeListView = value; NotifyPropertyChanged("LaunchPanelVisibility"); NotifyPropertyChanged("CodeListVisibility"); } } /// /// Returns true if we should be showing the launch panel. /// (Intended for use from XAML.) /// public Visibility LaunchPanelVisibility { get { return mShowCodeListView ? Visibility.Hidden : Visibility.Visible; } } /// /// Returns true if we should be showing the code ListView. /// (Intended for use from XAML.) /// public Visibility CodeListVisibility { get { return mShowCodeListView ? Visibility.Visible : Visibility.Hidden; } } /// Version string, for display. /// public string ProgramVersionString { get { return App.ProgramVersion.ToString(); } } private void AssembleCmd_Executed(object sender, ExecutedRoutedEventArgs e) { // test Debug.WriteLine("assembling"); } private void RecentProject_Executed(object sender, ExecutedRoutedEventArgs e) { if (!int.TryParse((string)e.Parameter, out int recentIndex) || recentIndex < 1 || recentIndex > MainController.MAX_RECENT_PROJECTS) { throw new Exception("Bad parameter: " + e.Parameter); } recentIndex--; Debug.WriteLine("Recent project #" + recentIndex); mUI.OpenRecentProject(recentIndex); } private void CodeListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { Debug.WriteLine("SEL: add " + e.AddedItems.Count + ", rem " + e.RemovedItems.Count); } } }