This commit is contained in:
Maddo 2016-07-04 16:45:45 +02:00
commit 3b1afdf2c0
92 changed files with 23248 additions and 0 deletions

6
WPFCatalog/App.config Normal file
View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
</configuration>

5
WPFCatalog/App.xaml Normal file
View file

@ -0,0 +1,5 @@
<Application x:Class="WPFCatalog.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" d1p1:Ignorable="d" xmlns:d1p1="http://schemas.openxmlformats.org/markup-compatibility/2006">
<Application.Resources>
<vm:ViewModelLocator x:Key="Locator" d:IsDataSource="True" xmlns:vm="clr-namespace:WPFCatalog.ViewModel" />
</Application.Resources>
</Application>

17
WPFCatalog/App.xaml.cs Normal file
View file

@ -0,0 +1,17 @@
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
namespace WPFCatalog
{
/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
WPFCatalog/Icons/photo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

424
WPFCatalog/MainWindow.xaml Normal file
View file

@ -0,0 +1,424 @@
<Window x:Name="MainWindow1" x:Class="WPFCatalog.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:wpfCatalog="clr-namespace:WPFCatalog"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance wpfCatalog:MainWindowViewModel}"
Title="Image Catalog" Height="466" Width="772"
>
<Window.Resources>
<Style x:Key="CommonStyle" TargetType="FrameworkElement">
<Setter Property="Margin" Value="4" />
</Style>
<Style TargetType="TextBox" BasedOn="{StaticResource CommonStyle}"></Style>
<Style TargetType="Button" >
<Setter Property="Margin" Value="2,2,5,5" />
</Style>
<Style TargetType="ComboBox" BasedOn="{StaticResource CommonStyle}"></Style>
</Window.Resources>
<DockPanel LastChildFill="True">
<Menu DockPanel.Dock="Top" Height="auto">
<MenuItem Header="Files"/>
<MenuItem Header="Modifica"></MenuItem>
<MenuItem Header="?"></MenuItem>
</Menu>
<StatusBar DockPanel.Dock="Bottom" Height="auto">
<StatusBarItem>
<ProgressBar Width="510" Height="10">
</ProgressBar>
</StatusBarItem>
</StatusBar>
<DockPanel >
<!--<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>-->
<TabControl DockPanel.Dock="Left" Width="520">
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Generale" Margin="0,0,5,0"/>
<Image Source="Icons/camera-photo-5.png" Width="16" Height="16" />
</StackPanel>
</TabItem.Header>
<WrapPanel>
<GroupBox Header="Directory" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="400"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Sorgente"/>
<TextBox Grid.Row="0" Grid.Column="1" x:Name="txtSorgente" Margin="0,5" Text="{Binding DirSorgente}" />
<Button Grid.Row="0" Grid.Column="2" x:Name="btnOpenSorgente" Margin="5,5" Command="{Binding OpenSorgenteCommand}">
<Button.Content>
<Image Source="Icons/document-open-6.png" />
</Button.Content>
</Button>
<Label Grid.Row="1" Grid.Column="0" Content="Destinazione"/>
<TextBox Grid.Row="1" Grid.Column="1" x:Name="txtDestinazione" Margin="0,5" Text="{Binding DirDestinazione}"/>
<Button Grid.Row="1" Grid.Column="2" x:Name="btnOpenDestinazione" Margin="5,5" Command="{Binding OpenDestinazioneCommand}">
<Button.Content>
<Image Source="Icons/document-open-6.png" />
</Button.Content>
</Button>
<CheckBox Grid.Row="2" Grid.Column="1" Content="Aggiorna le sottodirectory" x:Name="chkAggiornaSottodirectory" IsChecked="{Binding DirAggiornaSottoDirectory}"/>
</Grid>
</GroupBox>
<GroupBox Header="Generale" Margin="2">
<StackPanel Orientation="Vertical" >
<CheckBox Content="Aggiorna JPG" x:Name="chkForzaJPG" IsChecked="{Binding GeneraleForzaJpg}" Margin="2"/>
<CheckBox Content="Rotazione Automatica" x:Name="chkRotazioneAutomatica" IsChecked="{Binding GeneraleRotazioneAutomatica}" Margin="2"/>
<CheckBox Content="Sovrascrivi File" x:Name="chkSovrascriviFile" IsChecked="{Binding GeneraleSovrascriviFile}" Margin="2"/>
</StackPanel>
</GroupBox>
<GroupBox Header="Sottocartelle" Margin="2">
<StackPanel Orientation="Vertical">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<CheckBox Grid.Row="0" Grid.Column="1" Content="Crea Sottocartelle" x:Name="chkCreaSottocartelle" Margin="4,0,0,0" IsChecked="{Binding SubdirCreaSottoCartelle}"/>
<Label Grid.Row="1" Grid.Column="0" Content="Ogni"/>
<StackPanel Orientation="Horizontal" Grid.Row="1" Grid.Column="1">
<TextBox Width="50" HorizontalAlignment="Left" x:Name="txtOgni" Text="{Binding SubdirIntervalloFile}"/>
<Label Content="file"/>
</StackPanel>
<Label Grid.Row="2" Grid.Column="0" Content="Suffisso" />
<TextBox Grid.Row="2" Grid.Column="1" HorizontalAlignment="Stretch" x:Name="txtSuffisso" Text="{Binding SubdirSuffisso}"/>
</Grid>
<StackPanel Orientation="Horizontal" >
<Label Content="Num. Cifre Contatore" />
<TextBox Width="40" HorizontalAlignment="Right" x:Name="txtNumCifreContatore" Text="{Binding SubdirCifreContatore}"/>
</StackPanel>
<RadioButton Content="Numerazione Progressiva" IsChecked="{Binding SubdirNumerazioneProgressiva}" x:Name="rdbNumerazioneProgressiva" />
<RadioButton Content="Numerazione Files" x:Name="rdbNumerazioneFiles" IsChecked="{Binding SubdirNumerazioneFiles}"/>
</StackPanel>
</GroupBox>
<GroupBox Margin="2">
<GroupBox.Header>
<StackPanel Orientation="Horizontal">
<Image Source="Icons/photo.png" />
<TextBlock Text="Foto" Margin="5,0,0,0" />
</StackPanel>
</GroupBox.Header>
<Grid >
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="15*"/>
<ColumnDefinition Width="48*"/>
<ColumnDefinition Width="88*"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Altezza" Grid.ColumnSpan="2" Margin="0,0,0,2" />
<TextBox Grid.Row="0" Grid.Column="2" Width="80" Margin="4,4,4,6" Text="{Binding FotoAltezza}"/>
<Label Grid.Column="0" Content="Larghezza" Grid.ColumnSpan="2" Margin="0,26,0,2" Grid.RowSpan="2" />
<TextBox Grid.Row="1" Grid.Column="2" Width="80" Margin="4,2,4,6" Text="{Binding FotoLarghezza}"></TextBox>
<Label Grid.Row="1" Grid.Column="0" Content="Qualità" Grid.ColumnSpan="2" Margin="0,24,0,1" Grid.RowSpan="2" />
<TextBox Grid.Row="2" Grid.Column="2" Width="80" Margin="4,2,4,5" />
<CheckBox Grid.Row="3" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,16,0,17.88" IsChecked="{Binding FotoMantieniDimensioni}"/>
<TextBlock Grid.Row="3" Grid.Column="2" Text="Mantieni Dimensioni Originali" TextWrapping="WrapWithOverflow" Width="80" Margin="4,0,4,25.88" Grid.RowSpan="2" />
<Label Grid.Row="4" Grid.Column="0" Content="Suffisso" Grid.ColumnSpan="2" Margin="0,0.12,0,-0.12" />
<TextBox Grid.Row="4" Grid.Column="2" Width="80" Margin="4,4.12,4,3.88" Text="{Binding FotoSuffisso}" />
</Grid>
</GroupBox>
</WrapPanel>
</TabItem>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<CheckBox VerticalAlignment="Center" IsChecked="{Binding TestoAttivo}"/>
<Label Content="Testo" VerticalAlignment="Center"/>
<Image Source="Icons/format-justify-left-2.png" />
</StackPanel>
</TabItem.Header>
<StackPanel Orientation="Vertical">
<StackPanel Orientation="Horizontal">
<GroupBox Header="Carattere">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Font"/>
<ComboBox Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="2" Width="100" HorizontalAlignment="Right" SelectedItem="{Binding CarattereFont}" /> <!--todo-->
<CheckBox Grid.Row="0" Grid.Column="3" Content="Grassetto" VerticalAlignment="Center" IsChecked="{Binding CarattereGrassetto}" />
<Label Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2" Content="Dimensione"/>
<TextBox Grid.Row="1" Grid.Column="2" Text="{Binding CarattereDimensione}"/>
<Label Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Content="Dimensione Miniatura"/>
<TextBox Grid.Row="2" Grid.Column="2" Text="{Binding CarattereDimensioneMiniatura}"/>
<Label Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" Content="Colore RGB" />
<TextBox Grid.Row="3" Grid.Column="2" Text="{Binding CarattereColoreRGB}"/>
<Button Grid.Row="3" Grid.Column="3" Content="Scegli..." />
</Grid>
</GroupBox>
<StackPanel Orientation="Vertical" VerticalAlignment="Stretch">
<GroupBox Header="Slide Show" VerticalAlignment="Stretch">
<StackPanel Orientation="Horizontal" >
<CheckBox Content="Data" Margin="5,0" IsChecked="{Binding SlideshowData}"/>
<CheckBox Content="Numero Foto" Margin="5,0" IsChecked="{Binding SlideshowNumeroFoto}"/>
</StackPanel>
</GroupBox>
<GroupBox Header="Testo foto verticali" VerticalAlignment="Stretch">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Dimensione Carattere"/>
<TextBox Grid.Row="0" Grid.Column="1" Width="40" Text="{Binding TestoVertDimensioneCarattere}"/>
<Label Grid.Row="1" Grid.Column="0" Content="Margine"/>
<TextBox Grid.Row="1" Grid.Column="1" Width="40" Text="{Binding TestoVertMargine}"/>
</Grid>
</GroupBox>
</StackPanel>
</StackPanel>
<GroupBox Header="Testo da applicare">
<StackPanel Orientation="Vertical">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Orizzontale" />
<Label Grid.Row="1" Grid.Column="0" Content="Verticale" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding TestoApplicareOrizzontale}"/>
<TextBox Grid.Row="1" Grid.Column="1" Height="50" MaxLines="4" AcceptsReturn="True" Text="{Binding TestoApplicareVerticale}"/>
</Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2" Content="Trasparenza(0-100%)" />
<TextBox Grid.Row="0" Grid.Column="2" Text="{Binding TestoApplicareTrasparenza}" />
<Label Grid.Row="1" Grid.Column="0" Content="Posizione" />
<ComboBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" /> <!--ToDo-->
<CheckBox Grid.Row="2" Grid.Column="1" Content="Orario" IsChecked="{Binding TestoApplicareOrario}"/>
<CheckBox Grid.Row="2" Grid.Column="2" Content="Tempo Gara" IsChecked="{Binding TestoApplicareTempoGaraCheck}"/>
<TextBox Grid.Row="2" Grid.Column="3" Grid.ColumnSpan="2" Text="{Binding TestoApplicareTempoGara}"/>
<Label Grid.Row="0" Grid.Column="4" Grid.ColumnSpan="2" Content="Margine (pixel)" HorizontalAlignment="Right" />
<TextBox Grid.Row="0" Grid.Column="6" Grid.ColumnSpan="2" Text="{Binding TestoApplicareMargine}"/>
<Label Grid.Row="1" Grid.Column="4" Grid.ColumnSpan="2" Content="Allineamento" HorizontalAlignment="Right" />
<TextBox Grid.Row="1" Grid.Column="6" Grid.ColumnSpan="2" Text="{Binding TestoApplicareAllineamento}"/>
<Label Grid.Row="2" Grid.Column="5" Content="Partenza" />
<ComboBox Grid.Row="2" Grid.Column="6" Grid.ColumnSpan="2" /> <!--todo-->
</Grid>
</StackPanel>
</GroupBox>
</StackPanel>
</TabItem>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<CheckBox VerticalAlignment="Center" />
<Label VerticalAlignment="Center" Content="Miniature" />
<Image Source="Icons/picture.png" />
</StackPanel>
</TabItem.Header>
<WrapPanel>
<GroupBox Header="Miniature">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Suffisso" />
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding MiniatureSuffisso}"/>
<Label Grid.Row="1" Grid.Column="0" Content="Larghezza" />
<TextBox Grid.Row="1" Grid.Column="1" Text="{Binding MiniatureLarghezza}"/>
<Label Grid.Row="2" Grid.Column="0" Content="Altezza" />
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding MiniatureAltezza}"/>
<Label Grid.Row="3" Grid.Column="0" Content="Qualità" />
<TextBox Grid.Row="3" Grid.Column="1" Text="{Binding MiniatureQualita}"/>
</Grid>
</GroupBox>
<GroupBox Header="Testo Miniature" >
<WrapPanel Orientation="Vertical" >
<RadioButton Content="Aggiungi Scritta" Margin="4,2,4,2" IsChecked="{Binding TestoMinAggiungiScritta}" />
<RadioButton Content="Aggiungi Orario" Margin="4,2,4,2" IsChecked="{Binding TestoMinAggiungiOrario}"/>
<RadioButton Content="Tempo Gara" Margin="4,2,4,2" IsChecked="{Binding TestoMinTempoGara}"/>
<RadioButton Content="Numero Foto" Margin="4,2,4,2" IsChecked="{Binding TestoMinNumeroFoto}"/>
<RadioButton Content="Numero + Tempo" Margin="4,2,4,2" IsChecked="{Binding TestoMinNumeroTempo}"></RadioButton>
</WrapPanel>
</GroupBox>
</WrapPanel>
</TabItem>
<TabItem>
<TabItem.Header>
<StackPanel Orientation="Horizontal">
<CheckBox VerticalAlignment="Center" />
<Label VerticalAlignment="Center" Content="Logo" />
<Image Source="Icons/face-smile-2.png"/>
</StackPanel>
</TabItem.Header>
<WrapPanel>
<GroupBox Header="Logo">
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="200"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<Label Grid.Row="0" Grid.Column="0" Content="Percorso Immagine"/>
<TextBox Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="3" Text="{Binding LogoPercorsoImmagine}"/>
<Button Grid.Row="0" Grid.Column="4" Content="..." Command="{Binding ScegliLogoCommand}" />
<Label Grid.Row="1" Grid.Column="0" Content="Altezza" />
<TextBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" Text="{Binding LogoAltezza}" />
<Label Grid.Row="2" Grid.Column="0" Content="Larghezza" />
<TextBox Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="2" Text="{Binding LogoLarghezza}" />
<Label Grid.Row="3" Grid.Column="0" Content="Trasparenza (0-100%)" />
<TextBox Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="2" Text="{Binding LogoTrasparenza}" />
<Label Grid.Row="4" Grid.Column="0" Content="Margine (pixel %)" />
<TextBox Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="2" Text="{Binding LogoMargine}" />
<Label Grid.Row="5" Grid.Column="0" Content="Posizione Orizzontale" />
<ComboBox Grid.Row="5" Grid.Column="1" Grid.ColumnSpan="2" /> <!--todo-->
<Label Grid.Row="6" Grid.Column="0" Content="Posizione Verticale" />
<ComboBox Grid.Row="6" Grid.Column="1" Grid.ColumnSpan="2" /> <!--todo-->
<Label Grid.Row="7" Grid.Column="0" Content="Colore Trasparente" />
<Image Grid.Row="7" Grid.Column="1" Width="24" Height="24" HorizontalAlignment="Left" />
<Image Grid.Row="7" Grid.Column="8" Width="24" Height="24" HorizontalAlignment="Right" />
<Image Grid.Row="1" Grid.Column="3" Grid.RowSpan="7" />
</Grid>
</GroupBox>
</WrapPanel>
</TabItem>
</TabControl>
<StackPanel DockPanel.Dock="Right" Orientation="Vertical">
<GroupBox DockPanel.Dock="Right" Header="Statistiche">
<Button Content="STOP" Width="192" Command="{Binding StopCommand}"/>
</GroupBox>
</StackPanel>
</DockPanel>
</DockPanel>
</Window>

View file

@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
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.Navigation;
using System.Windows.Shapes;
using CatalogLib;
namespace WPFCatalog
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public PicSettings GlobalSettings = new PicSettings();
public MainWindow()
{
InitializeComponent();
DataContext = new MainWindowViewModel();
SetDefaults();
}
private void SetDefaults()
{
}
}
}

View file

@ -0,0 +1,493 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using CatalogLib;
namespace WPFCatalog
{
public class MainWindowViewModel : ViewModelBase
{
public PicSettings PicSettings { get; set; }
public MainWindowViewModel()
{
PicSettings = new PicSettings();
}
#region Proprietà
public PicSettings SettingsString
{
get { return PicSettings; }
}
public string DirSorgente
{
get { return PicSettings.GetString("dirSorgente"); }
set { PicSettings.Set("dirSorgente", value); }
}
public string DirDestinazione
{
get { return PicSettings.GetString("dirDestinazione"); }
set
{
PicSettings.Set("dirDestinazione", value);
RaisePropertyChanged("DirDestinazione");
}
}
public bool DirSottoDirectory
{
get { return PicSettings.GetBool("dirSottoDirectory"); }
set
{
PicSettings.Set("dirSottoDirectory", value);
RaisePropertyChanged("DirSottoDirectory");
}
}
public bool SubdirCreaSottoCartelle
{
//get { return PicSettings.GetBool("")}
}
public string DirDividiNumFile { get { return PicSettings.GetString("dirDividiNumFile"); } set { PicSettings.Set("dirDividiNumFile", value); } }
public string DirDividiSuffisso { get { return PicSettings.GetString("dirDividiSuffisso"); } set { PicSettings.Set("dirDividiSuffisso", value); } }
public string DirDividiNumCifre { get { return PicSettings.GetString("dirDividiNumCifre"); } set { PicSettings.Set("dirDividiNumCifre", value); RaisePropertyChanged("DirDividiNumCifre");} }
public bool DirDividiDestinazione { get { return PicSettings.GetBool("dirDividiDestinazione"); } set { PicSettings.Set("dirDividiDestinazione", value); } }
public bool DirDividiTipoNumerazioneProg { get { return PicSettings.GetString("DirDividiTipoNumerazione").ToUpper() == "PROGRESSIVA"; } set { if (value == true) PicSettings.Set("DirDividiTipoNumerazione", "PROGRESSIVA"); } }
public bool DirDividiTipoNumerazioneFile { get { return PicSettings.GetString("DirDividiTipoNumerazione").ToUpper() == "FILES"; } set { if (value == false) PicSettings.Set("DirDividiTipoNumerazione", "FILES"); } }
public bool MiniatureCrea { get { return PicSettings.GetBool("miniatureCrea"); } set { PicSettings.Set("miniatureCrea",value); RaisePropertyChanged("MiniatureCrea");} }
public string MiniatureSuffisso
{
get { return PicSettings.GetString("miniatureSuffisso"); }
set
{
PicSettings.Set("miniatureSuffisso", value);
RaisePropertyChanged("MiniatureSuffisso");
}
}
public string MiniatureAltezza
{
get { return PicSettings.GetString("miniatureAltezza"); }
set
{
PicSettings.Set("miniatureAltezza", value);
RaisePropertyChanged("MiniatureAltezza");
}
}
public string MiniatureLarghezza
{
get { return PicSettings.GetString("miniatureLarghezza"); }
set
{
PicSettings.Set("miniatureLarghezza", value);
RaisePropertyChanged("MiniatureLarghezza");
}
}
public bool MiniatureAddScritta
{
get { return PicSettings.GetBool("miniatureAddScritta"); }
set
{
PicSettings.Set("miniatureAddScritta", value);
RaisePropertyChanged("MiniatureAddScritta");
}
}
public bool MiniatureAddOrario
{
get { return PicSettings.GetBool("miniatureAddOrario"); }
set
{
PicSettings.Set("miniatureAddOrario", value);
RaisePropertyChanged("MiniatureAddOrario");
}
}
public string FotoAltezza
{
get { return PicSettings.GetString("fotoAltezza"); }
set
{
PicSettings.Set("fotoAltezza", value);
RaisePropertyChanged("FotoAltezza");
}
}
public string FotoLarghezza
{
get { return PicSettings.GetString("fotoLarghezza"); }
set
{
PicSettings.Set("fotoLarghezza", value);
RaisePropertyChanged("FotoLarghezza");
}
}
public string FontDimensione
{
get { return PicSettings.GetString("fontDimensione"); }
set
{
PicSettings.Set("fontDimensione", value);
RaisePropertyChanged("FontDimensione");
}
}
public string FontDimensioneMiniatura
{
get { return PicSettings.GetString("fontDimensioneMiniatura"); }
set
{
PicSettings.Set("fontDimensioneMiniatura", value);
RaisePropertyChanged("FontDimensioneMiniatura");
}
}
public bool FontBold
{
get { return PicSettings.GetBool("fontBold"); }
set
{
PicSettings.Set("fontBold", value);
RaisePropertyChanged("FontBold");
}
}
public bool FontNome
{
get { return PicSettings.GetBool("fontNome"); }
set
{
PicSettings.Set("$parName", value);
RaisePropertyChanged("FontNome");
}
}
public string TestoTesto
{
get { return PicSettings.GetString("testoTesto"); }
set
{
PicSettings.Set("testoTesto", value);
RaisePropertyChanged("TestoTesto");
}
}
public string TestoTrasparente
{
get { return PicSettings.GetString("testoTrasparente"); }
set
{
PicSettings.Set("testoTrasparente", value);
RaisePropertyChanged("TestoTrasparente");
}
}
public string TestoMargine
{
get { return PicSettings.GetString("testoMargine"); }
set
{
PicSettings.Set("testoMargine", value);
RaisePropertyChanged("TestoMargine");
}
}
public string TestoPosizione
{
get { return PicSettings.GetString("testoPosizione"); }
set
{
PicSettings.Set("testoPosizione", value);
RaisePropertyChanged("TestoPosizione");
}
}
public string TestoAllineamento
{
get { return PicSettings.GetString("testoAllineamento"); }
set
{
PicSettings.Set("testoAllineamento", value);
RaisePropertyChanged("TestoAllineamento");
}
}
public string MarchioFile
{
get { return PicSettings.GetString("marchioFile"); }
set
{
PicSettings.Set("marchioFile", value);
RaisePropertyChanged("MarchioFile");
}
}
public string MarchioAltezza
{
get { return PicSettings.GetString("marchioAltezza"); }
set
{
PicSettings.Set("marchioAltezza", value);
RaisePropertyChanged("MarchioAltezza");
}
}
public string MarchioLarghezza
{
get { return PicSettings.GetString("marchioLarghezza"); }
set
{
PicSettings.Set("marchioLarghezza", value);
RaisePropertyChanged("MarchioLarghezza");
}
}
public string MarchioMargine
{
get { return PicSettings.GetString("marchioMargine"); }
set
{
PicSettings.Set("marchioMargine", value);
RaisePropertyChanged("MarchioMargine");
}
}
public string MarchioAllOrizzontale
{
get { return PicSettings.GetString("marchioAllOrizzontale"); }
set
{
PicSettings.Set("marchioAllOrizzontale", value);
RaisePropertyChanged("MarchioAllOrizzontale");
}
}
public string MarchioAllVerticale
{
get { return PicSettings.GetString("marchioAllVerticale"); }
set
{
PicSettings.Set("marchioAllVerticale", value);
RaisePropertyChanged("MarchioAllVerticale");
}
}
public string MarchioTrasparenza
{
get { return PicSettings.GetString("marchioTrasparenza"); }
set
{
PicSettings.Set("marchioTrasparenza", value);
RaisePropertyChanged("MarchioTrasparenza");
}
}
public bool MarchioAggiungi
{
get { return PicSettings.GetBool("marchioAggiungi"); }
set
{
PicSettings.Set("marchioAggiungi", value);
RaisePropertyChanged("MarchioAggiungi");
}
}
public bool TempoGara
{
get { return PicSettings.GetBool("tempoGara"); }
set
{
PicSettings.Set("tempoGara", value);
RaisePropertyChanged("TempoGara");
}
}
public bool Orario
{
get { return PicSettings.GetBool("orario"); }
set
{
PicSettings.Set("orario", value);
RaisePropertyChanged("Orario");
}
}
public string EtichettaOrario
{
get { return PicSettings.GetString("etichettaOrario"); }
set
{
PicSettings.Set("etichettaOrario", value);
RaisePropertyChanged("EtichettaOrario");
}
}
public bool GeneraleForzaJpg
{
get { return PicSettings.GetBool("generaleForzaJpg"); }
set
{
PicSettings.Set("generaleForzaJpg", value);
RaisePropertyChanged("GeneraleForzaJpg");
}
}
public bool GeneraleRotazioneAutomatica
{
get { return PicSettings.GetBool("generaleRotazioneAutomatica"); }
set
{
PicSettings.Set("generaleRotazioneAutomatica", value);
RaisePropertyChanged("GeneraleRotazioneAutomatica");
}
}
public bool GeneraleSovrascriviFile
{
get { return PicSettings.GetBool("generaleSovrascriviFile"); }
set
{
PicSettings.Set("generaleSovrascriviFile", value);
RaisePropertyChanged("GeneraleSovrascriviFile");
}
}
public string GrandezzaVerticale
{
get { return PicSettings.GetString("grandezzaVerticale"); }
set
{
PicSettings.Set("grandezzaVerticale", value);
RaisePropertyChanged("GrandezzaVerticale");
}
}
public string MargineVerticale
{
get { return PicSettings.GetString("margineVerticale"); }
set
{
PicSettings.Set("margineVerticale", value);
RaisePropertyChanged("MargineVerticale");
}
}
public bool DimensioniOriginali
{
get { return PicSettings.GetBool("dimensioniOriginali"); }
set
{
PicSettings.Set("dimensioniOriginali", value);
RaisePropertyChanged("DimensioniOriginali");
}
}
public string TestoVerticale
{
get { return PicSettings.GetString("testoVerticale"); }
set
{
PicSettings.Set("testoVerticale", value);
RaisePropertyChanged("TestoVerticale");
}
}
public bool NomeMiniatura
{
get { return PicSettings.GetBool("nomeMiniatura"); }
set
{
PicSettings.Set("nomeMiniatura", value);
RaisePropertyChanged("NomeMiniatura");
}
}
public bool DataFoto
{
get { return PicSettings.GetBool("dataFoto"); }
set
{
PicSettings.Set("dataFoto", value);
RaisePropertyChanged("DataFoto");
}
}
public bool NumeroFoto
{
get { return PicSettings.GetBool("numeroFoto"); }
set
{
PicSettings.Set("numeroFoto", value);
RaisePropertyChanged("NumeroFoto");
}
}
public bool TempoSmall
{
get { return PicSettings.GetBool("tempoSmall"); }
set
{
PicSettings.Set("tempoSmall", value);
RaisePropertyChanged("TempoSmall");
}
}
public bool NumTempoSmall
{
get { return PicSettings.GetBool("numTempoSmall"); }
set
{
PicSettings.Set("numTempoSmall", value);
RaisePropertyChanged("NumTempoSmall");
}
}
public string CompressioneJpeg
{
get { return PicSettings.GetString("compressioneJpeg"); }
set
{
PicSettings.Set("compressioneJpeg", value);
RaisePropertyChanged("CompressioneJpeg");
}
}
public string CompressioneJpegMiniatura
{
get { return PicSettings.GetString("compressioneJpegMiniatura"); }
set
{
PicSettings.Set("compressioneJpegMiniatura", value);
RaisePropertyChanged("CompressioneJpegMiniatura");
}
}
public string ColoreTestoRGB
{
get { return PicSettings.GetString("coloreTestoRGB"); }
set
{
PicSettings.Set("coloreTestoRGB", value);
RaisePropertyChanged("ColoreTestoRGB");
}
}
#endregion
}
}

View file

@ -0,0 +1,55 @@
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Windows;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("WPFCatalog")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WPFCatalog")]
[assembly: AssemblyCopyright("Copyright © 2013")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
//In order to begin building localizable applications, set
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
//inside a <PropertyGroup>. For example, if you are using US english
//in your source files, set the <UICulture> to en-US. Then uncomment
//the NeutralResourceLanguage attribute below. Update the "en-US" in
//the line below to match the UICulture setting in the project file.
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
[assembly: ThemeInfo(
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
//(used if a resource is not found in the page,
// or application resource dictionaries)
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
//(used if a resource is not found in the page,
// app, or any theme specific resource dictionaries)
)]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

View file

@ -0,0 +1,71 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18052
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WPFCatalog.Properties
{
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class Resources
{
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal Resources()
{
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager
{
get
{
if ((resourceMan == null))
{
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WPFCatalog.Properties.Resources", typeof(Resources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture
{
get
{
return resourceCulture;
}
set
{
resourceCulture = value;
}
}
}
}

View file

@ -0,0 +1,117 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View file

@ -0,0 +1,30 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.18052
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace WPFCatalog.Properties
{
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
return defaultInstance;
}
}
}
}

View file

@ -0,0 +1,7 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View file

@ -0,0 +1,37 @@
using GalaSoft.MvvmLight;
namespace WPFCatalog.ViewModel
{
/// <summary>
/// This class contains properties that the main View can data bind to.
/// <para>
/// Use the <strong>mvvminpc</strong> snippet to add bindable properties to this ViewModel.
/// </para>
/// <para>
/// You can also use Blend to data bind with the tool's support.
/// </para>
/// <para>
/// See http://www.galasoft.ch/mvvm
/// </para>
/// </summary>
public class MainViewModel : ViewModelBase
{
/// <summary>
/// Initializes a new instance of the MainViewModel class.
/// </summary>
public MainViewModel()
{
////if (IsInDesignMode)
////{
//// // Code runs in Blend --> create design time data.
////}
////else
////{
//// // Code runs "for real"
////}
}
}
}

View file

@ -0,0 +1,63 @@
/*
In App.xaml:
<Application.Resources>
<vm:ViewModelLocator xmlns:vm="clr-namespace:WPFCatalog"
x:Key="Locator" />
</Application.Resources>
In the View:
DataContext="{Binding Source={StaticResource Locator}, Path=ViewModelName}"
You can also use Blend to do all this with the tool's support.
See http://www.galasoft.ch/mvvm
*/
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Ioc;
using Microsoft.Practices.ServiceLocation;
namespace WPFCatalog.ViewModel
{
/// <summary>
/// This class contains static references to all the view models in the
/// application and provides an entry point for the bindings.
/// </summary>
public class ViewModelLocator
{
/// <summary>
/// Initializes a new instance of the ViewModelLocator class.
/// </summary>
public ViewModelLocator()
{
ServiceLocator.SetLocatorProvider(() => SimpleIoc.Default);
////if (ViewModelBase.IsInDesignModeStatic)
////{
//// // Create design time view services and models
//// SimpleIoc.Default.Register<IDataService, DesignDataService>();
////}
////else
////{
//// // Create run time view services and models
//// SimpleIoc.Default.Register<IDataService, DataService>();
////}
SimpleIoc.Default.Register<MainViewModel>();
}
public MainViewModel Main
{
get
{
return ServiceLocator.Current.GetInstance<MainViewModel>();
}
}
public static void Cleanup()
{
// TODO Clear the ViewModels
}
}
}

127
WPFCatalog/ViewModelBase.cs Normal file
View file

@ -0,0 +1,127 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel;
using System.Diagnostics;
namespace WPFCatalog
{
public abstract class ViewModelBase : GalaSoft.MvvmLight.ViewModelBase, INotifyPropertyChanged, IDisposable
{
#region Constructor
protected ViewModelBase()
{
}
#endregion // Constructor
#region DisplayName
/// <summary>
/// Returns the user-friendly name of this object.
/// Child classes can set this property to a new value,
/// or override it to determine the value on-demand.
/// </summary>
public virtual string DisplayName { get; protected set; }
#endregion // DisplayName
#region Debugging Aides
///// <summary>
///// Warns the developer if this object does not have
///// a public property with the specified name. This
///// method does not exist in a Release build.
///// </summary>
//[Conditional("DEBUG")]
//[DebuggerStepThrough]
//public void VerifyPropertyName(string propertyName)
//{
// // Verify that the property name matches a real,
// // public, instance property on this object.
// if (TypeDescriptor.GetProperties(this)[propertyName] == null)
// {
// string msg = "Invalid property name: " + propertyName;
// if (this.ThrowOnInvalidPropertyName)
// throw new Exception(msg);
// else
// Debug.Fail(msg);
// }
//}
/// <summary>
/// Returns whether an exception is thrown, or if a Debug.Fail() is used
/// when an invalid property name is passed to the VerifyPropertyName method.
/// The default value is false, but subclasses used by unit tests might
/// override this property's getter to return true.
/// </summary>
protected virtual bool ThrowOnInvalidPropertyName { get; private set; }
#endregion // Debugging Aides
#region INotifyPropertyChanged Members
/// <summary>
/// Raised when a property on this object has a new value.
/// </summary>
//public event PropertyChangedEventHandler PropertyChanged;
///// <summary>
///// Raises this object's PropertyChanged event.
///// </summary>
///// <param name="propertyName">The property that has a new value.</param>
//protected virtual void OnPropertyChanged(string propertyName)
//{
// this.VerifyPropertyName(propertyName);
// PropertyChangedEventHandler handler = this.PropertyChanged;
// if (handler != null)
// {
// var e = new PropertyChangedEventArgs(propertyName);
// handler(this, e);
// }
//}
#endregion // INotifyPropertyChanged Members
#region IDisposable Members
/// <summary>
/// Invoked when this object is being removed from the application
/// and will be subject to garbage collection.
/// </summary>
public void Dispose()
{
this.OnDispose();
}
/// <summary>
/// Child classes can override this method to perform
/// clean-up logic, such as removing event handlers.
/// </summary>
protected virtual void OnDispose()
{
}
#if DEBUG
/// <summary>
/// Useful for ensuring that ViewModel objects are properly garbage collected.
/// </summary>
~ViewModelBase()
{
string msg = string.Format("{0} ({1}) ({2}) Finalized", this.GetType().Name, this.DisplayName, this.GetHashCode());
System.Diagnostics.Debug.WriteLine(msg);
}
#endif
#endregion // IDisposable Members
}
}

View file

@ -0,0 +1,178 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{638DE501-CECA-4744-B293-7AE93CAEEB01}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>WPFCatalog</RootNamespace>
<AssemblyName>WPFCatalog</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Accessibility" />
<Reference Include="GalaSoft.MvvmLight.Extras.WPF45">
<HintPath>..\packages\MvvmLightLibs.4.1.27.1\lib\net45\GalaSoft.MvvmLight.Extras.WPF45.dll</HintPath>
</Reference>
<Reference Include="GalaSoft.MvvmLight.WPF45">
<HintPath>..\packages\MvvmLightLibs.4.1.27.1\lib\net45\GalaSoft.MvvmLight.WPF45.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Practices.ServiceLocation">
<HintPath>..\packages\CommonServiceLocator.1.0\lib\NET35\Microsoft.Practices.ServiceLocation.dll</HintPath>
</Reference>
<Reference Include="PresentationUI, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
<Reference Include="ReachFramework" />
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Data" />
<Reference Include="System.Data.Services.Client" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Printing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\MvvmLightLibs.4.1.27.1\lib\net45\System.Windows.Interactivity.dll</HintPath>
</Reference>
<Reference Include="System.Xml" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Xaml">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
<Reference Include="UIAutomationProvider" />
<Reference Include="UIAutomationTypes" />
<Reference Include="WindowsBase" />
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="Xceed.Wpf.AvalonDock">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.1.0\lib\net40\Xceed.Wpf.AvalonDock.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Aero">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.1.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Metro">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.1.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.VS2010">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.1.0\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.DataGrid">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.1.0\lib\net40\Xceed.Wpf.DataGrid.dll</HintPath>
</Reference>
<Reference Include="Xceed.Wpf.Toolkit">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.1.0\lib\net40\Xceed.Wpf.Toolkit.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<ApplicationDefinition Include="App.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="ViewModelBase.cs" />
<Compile Include="ViewModel\MainViewModel.cs" />
<Compile Include="ViewModel\ViewModelLocator.cs" />
<Page Include="MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
<Compile Include="App.xaml.cs">
<DependentUpon>App.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="MainWindow.xaml.cs">
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<Compile Include="MainWindowViewModel.cs" />
<Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType>
</Compile>
<Compile Include="Properties\Resources.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<EmbeddedResource Include="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<None Include="packages.config" />
<None Include="Properties\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
</None>
<AppDesigner Include="Properties\" />
</ItemGroup>
<ItemGroup>
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\photo.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\document-open-6.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\camera-photo-5.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\format-justify-left-2.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\picture.png" />
</ItemGroup>
<ItemGroup>
<Resource Include="Icons\face-smile-2.png" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CatalogLib\CatalogLib.csproj">
<Project>{d27accf2-80fc-4de8-aeb8-351ff076e6d5}</Project>
<Name>CatalogLib</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="CommonServiceLocator" version="1.0" targetFramework="net45" />
<package id="Extended.Wpf.Toolkit" version="2.1.0" targetFramework="net45" />
<package id="MvvmLight" version="4.1.27.1" targetFramework="net45" />
<package id="MvvmLightLibs" version="4.1.27.1" targetFramework="net45" />
</packages>