Inserito Reader
Esempio base di lettore, con solo funzionalità di lettura random o sequenziale (frecce su/giu). Testato e la lettura è corretta. ToDo: - [X] Inserire un lettore per visualizzare i racconti nel DB - [ ] Inserire funzionalità avanzate di lettura (navigazione, filtri, ecc...) - [0/2] Integrare lo scraping dei racconti dal web - [ ] Integrare lo scraping visualizzandolo sulla progress bar e label nella status bar. - [ ] Importare i racconti via via che sono downloadati
This commit is contained in:
1 parent
b43dcbbb88
commit
1fd91b4af2
9 files changed
+1200
-2
No files matched your search
@@ -1 +1 @@
|
||||
{"RootPath":"C:\\Commesse\\_zPrivate\\A69WD\\Src\\A69WD","ProjectFileName":"A69WD.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"App.cs"},{"SourceFile":"Data\\cNota.cs"},{"SourceFile":"Data\\cRac.cs"},{"SourceFile":"Data\\DBTools.cs"},{"SourceFile":"Net\\eLinkState.cs"},{"SourceFile":"Net\\cLink_A69.cs"},{"SourceFile":"Service\\Service_Crawler.cs"},{"SourceFile":"Site\\cSite_A69.cs"},{"SourceFile":"UI\\frmDownloader.cs"},{"SourceFile":"UI\\frmDownloader.Designer.cs"},{"SourceFile":"General\\Cfg.cs"},{"SourceFile":"General\\cTools.cs"},{"SourceFile":"General\\Logger.cs"},{"SourceFile":"Net\\iLink.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"Site\\iSiteType.cs"},{"SourceFile":"Properties\\Resources.Designer.cs"},{"SourceFile":"Properties\\Settings.Designer.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.8.AssemblyAttributes.cs"}],"References":[{"Reference":"C:\\Commesse\\_zPrivate\\A69WD\\Src\\_Lib\\HtmlAgilityPack.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Commesse\\_zPrivate\\A69WD\\Src\\_Lib\\System.Data.SQLite.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Deployment.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Windows.Forms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"C:\\Commesse\\_zPrivate\\A69WD\\Src\\A69WD\\bin\\Debug\\A69WD.exe","OutputItemRelativePath":"A69WD.exe"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]}
|
||||
{"RootPath":"C:\\Commesse\\_zPrivate\\A69WD\\Src\\A69WD","ProjectFileName":"A69WD.csproj","Configuration":"Debug|AnyCPU","FrameworkPath":"","Sources":[{"SourceFile":"App.cs"},{"SourceFile":"Data\\cNota.cs"},{"SourceFile":"Data\\cRac.cs"},{"SourceFile":"Data\\DBTools.cs"},{"SourceFile":"Data\\Helper.cs"},{"SourceFile":"Net\\eLinkState.cs"},{"SourceFile":"Net\\cLink_A69.cs"},{"SourceFile":"Service\\Service_Crawler.cs"},{"SourceFile":"Service\\Service_Importer.cs"},{"SourceFile":"Site\\cSite_A69.cs"},{"SourceFile":"UI\\frmDownloader.cs"},{"SourceFile":"UI\\frmDownloader.Designer.cs"},{"SourceFile":"General\\Cfg.cs"},{"SourceFile":"General\\cTools.cs"},{"SourceFile":"General\\Logger.cs"},{"SourceFile":"Net\\iLink.cs"},{"SourceFile":"Properties\\AssemblyInfo.cs"},{"SourceFile":"Site\\iSiteType.cs"},{"SourceFile":"Properties\\Resources.Designer.cs"},{"SourceFile":"Properties\\Settings.Designer.cs"},{"SourceFile":"obj\\Debug\\.NETFramework,Version=v4.8.AssemblyAttributes.cs"}],"References":[{"Reference":"C:\\Commesse\\_zPrivate\\A69WD\\Src\\_Lib\\HtmlAgilityPack.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\Microsoft.CSharp.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\mscorlib.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Core.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Data.DataSetExtensions.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Data.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Commesse\\_zPrivate\\A69WD\\Src\\_Lib\\System.Data.SQLite.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Deployment.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Drawing.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Net.Http.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Windows.Forms.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Xml.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""},{"Reference":"C:\\Program Files (x86)\\Reference Assemblies\\Microsoft\\Framework\\.NETFramework\\v4.8\\System.Xml.Linq.dll","ResolvedFrom":"","OriginalItemSpec":"","Name":"","EmbedInteropTypes":false,"CopyLocal":false,"IsProjectReference":false,"ProjectPath":""}],"Analyzers":[],"Outputs":[{"OutputItemFullPath":"C:\\Commesse\\_zPrivate\\A69WD\\Src\\A69WD\\bin\\Debug\\A69WD.exe","OutputItemRelativePath":"A69WD.exe"},{"OutputItemFullPath":"","OutputItemRelativePath":""}],"CopyToOutputEntries":[]}
|
||||
@@ -63,6 +63,7 @@
|
||||
<Compile Include="Data\cRac.cs" />
|
||||
<Compile Include="Data\DBTools.cs" />
|
||||
<Compile Include="Data\Helper.cs" />
|
||||
<Compile Include="General\Navigator.cs" />
|
||||
<Compile Include="Net\eLinkState.cs" />
|
||||
<Compile Include="Net\cLink_A69.cs" />
|
||||
<Compile Include="Service\Service_Crawler.cs" />
|
||||
@@ -80,6 +81,12 @@
|
||||
<Compile Include="Net\iLink.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Site\iSiteType.cs" />
|
||||
<Compile Include="UI\frmReader.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\frmReader.Designer.cs">
|
||||
<DependentUpon>frmReader.cs</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="UI\frmDownloader.resx">
|
||||
<DependentUpon>frmDownloader.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
@@ -93,6 +100,9 @@
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="UI\frmReader.resx">
|
||||
<DependentUpon>frmReader.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
|
||||
+3
-1
@@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
using A69WD.UI;
|
||||
|
||||
|
||||
|
||||
@@ -34,7 +35,8 @@ namespace A69WD {
|
||||
// Start application:
|
||||
Logger.Information(" - - - START Application - - - ");
|
||||
if (DB.DB_ok) {
|
||||
Application.Run(new frmDownloader());
|
||||
//Application.Run(new frmDownloader());
|
||||
Application.Run(new frmReader());
|
||||
|
||||
Logger.Information(" - - - STOP Application - - - ");
|
||||
|
||||
|
||||
@@ -1725,8 +1725,18 @@ namespace A69WD {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Metodi ricavati ottimizzando i miei tramite gemini
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Ricava il racconto con l'ID indicato leggendolo dal DB
|
||||
/// </summary>
|
||||
@@ -1934,6 +1944,77 @@ namespace A69WD {
|
||||
|
||||
|
||||
|
||||
#region Reader function: GetReport, GetRandomIDrac
|
||||
|
||||
|
||||
private long GetNumRacs(string TagFilter = "") {
|
||||
string query = "SELECT count (IDrac) FROM Racconti";
|
||||
if (TagFilter != "") { query = "SELECT count (Racconti.IDrac) AS NUM FROM Racconti, Links_Rac_Vot, Voti WHERE Racconti.IDrac=Links_Rac_Vot.IDrac AND Links_Rac_Vot.IDvot=Voti.IDvot AND Voti.Voto='" + TagFilter + "'"; }
|
||||
return Helper.ExecuteScalar(cn,query,objLock);
|
||||
}
|
||||
|
||||
private long GetNumOri() { return Helper.CountSimpleRecord(cn, "Links_Rac_Ori", "IDori", objLock); }
|
||||
|
||||
private long GetNumAuts() { return Helper.CountSimpleRecord(cn, "Links_Rac_Aut", "IDaut", objLock); }
|
||||
|
||||
private long GetNumTags() { return Helper.CountSimpleRecord(cn, "Links_Rac_Tag", "IDtag", objLock); }
|
||||
|
||||
private long GetNumVot() { return Helper.CountSimpleRecord(cn, "Links_Rac_Vot", "IDvot", objLock); }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// ritorna il riepilogo del DB:
|
||||
/// </summary>
|
||||
/// <returns>Stringa con il riepilogo del DB</returns>
|
||||
public string Report {
|
||||
get {
|
||||
string report = "A69WD:\r\n\r\n";
|
||||
report += string.Format("L'archivio contiene {0} racconti:\r\n", GetNumRacs().ToString("000"));
|
||||
report += string.Format("> {0} non letti\r\n", GetNumRacs("Non Letto").ToString("000"));
|
||||
report += string.Format("> {0} sorgenti\r\n", GetNumOri().ToString("00"));
|
||||
report += string.Format("> {0} autori\r\n", GetNumAuts().ToString("000"));
|
||||
report += string.Format("> {0} tags\r\n", GetNumTags().ToString("000"));
|
||||
report += string.Format("> {0} voti\r\n", GetNumVot().ToString("000"));
|
||||
return report;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Metodo per trovare un identificativo di un racconto scelto casualmente fra quelli che soddisfano il filtro indicato.
|
||||
/// </summary>
|
||||
/// <param name="queryFilter">Eventuale query per filtrare i racconti selezionabili</param>
|
||||
/// <returns>Identificativo del racconto scelto casualmente</returns>
|
||||
public long GetRandomIDrac(string queryFilter = "") {
|
||||
//long ID = -3;
|
||||
//SQLiteDataReader rdr = null;
|
||||
//lock (objLock) {
|
||||
//try {
|
||||
//// Preparo i comandi SQL da usare:
|
||||
//string query = "SELECT Links_Rac_Vot.IDrac AS IDrac FROM Links_Rac_Vot, Voti WHERE Voti.Voto='Non Letto' AND Links_Rac_Vot.IDVot=Voti.IDvot ORDER BY RANDOM() LIMIT 1";
|
||||
//if (!string.IsNullOrEmpty(queryFilter)) query = string.Format("SELECT Links_Rac_Vot.IDrac AS IDrac FROM Links_Rac_Vot, Voti WHERE Links_Rac_Vot.IDVot=Voti.IDvot AND {0} ORDER BY RANDOM() LIMIT 1", queryFilter);
|
||||
//SQLiteCommand cmd = new SQLiteCommand(query, cn);
|
||||
//rdr = cmd.ExecuteReader();
|
||||
//while (rdr.Read()) { ID = (long)rdr["IDrac"]; }
|
||||
//rdr.Close();
|
||||
//rdr = null;
|
||||
//} catch (Exception ex) {
|
||||
//Logger.Error(string.Format("Error Code: {0} - Errore in {1}.{2}: {3}", "ER00070", System.Reflection.MethodInfo.GetCurrentMethod().DeclaringType.FullName, System.Reflection.MethodInfo.GetCurrentMethod().Name, ex.Message));
|
||||
//ID = -2;
|
||||
//}
|
||||
//}
|
||||
//return ID;
|
||||
string query = "SELECT Links_Rac_Vot.IDrac AS IDrac FROM Links_Rac_Vot, Voti WHERE Voti.Voto='Non Letto' AND Links_Rac_Vot.IDVot=Voti.IDvot ORDER BY RANDOM() LIMIT 1";
|
||||
if (!string.IsNullOrEmpty(queryFilter)) query = string.Format("SELECT Links_Rac_Vot.IDrac AS IDrac FROM Links_Rac_Vot, Voti WHERE Links_Rac_Vot.IDVot=Voti.IDvot AND {0} ORDER BY RANDOM() LIMIT 1", queryFilter);
|
||||
return Helper.ExecuteScalar(cn, query, objLock);
|
||||
}
|
||||
|
||||
public int UpdateVoto(long IDrac, string NewVoto) {
|
||||
Logger.Warning("Funzione 'UpdateVoto(IDrac, NewVoto) ancora da fare.");
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
} //class DBTools
|
||||
|
||||
@@ -70,6 +70,61 @@ namespace A69WD.Data {
|
||||
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Esegue una query che ritorna un scalare
|
||||
/// </summary>
|
||||
/// <param name="query">Query da eseguire sul DB</param>
|
||||
/// <returns>Scalare ritornato dalla query</returns>
|
||||
public static long ExecuteScalar(SQLiteConnection conn, string query, object objLock) {
|
||||
lock (objLock) {
|
||||
try {
|
||||
// Eseguo il comando
|
||||
System.Data.SQLite.SQLiteCommand cm = new SQLiteCommand(query, conn);
|
||||
long res = (long)cm.ExecuteScalar(System.Data.CommandBehavior.SingleResult);
|
||||
return res;
|
||||
} catch (Exception ex) {
|
||||
if (ex.Message == "Object reference not set to an instance of an object.") {
|
||||
// nessun record trovato che soddisfi la query
|
||||
return 0;
|
||||
} else {
|
||||
Logger.Error(string.Format("Error Code: {0} - Errore in {1}.{2}: {3}", "ER00100", System.Reflection.MethodInfo.GetCurrentMethod().DeclaringType.FullName, System.Reflection.MethodInfo.GetCurrentMethod().Name, ex.Message));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
} // ExecuteScalar
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Conteggia il numero di record nella colonna indicata contenuti nella tabella indicata.
|
||||
/// </summary>
|
||||
/// <param name="conn">Connessione al DB</param>
|
||||
/// <param name="tableName">Nome della tabella in cui fare la query</param>
|
||||
/// <param name="columName">Nome del campo da contare</param>
|
||||
/// <param name="objLock">Oggetto per il lock fra i thread</param>
|
||||
/// <returns>Il numero di record trovati, oppure un codice negativo in caso di errore.</returns>
|
||||
public static long CountSimpleRecord(SQLiteConnection conn, string tableName, string columName, object objLock) {
|
||||
// Ricreo la query:
|
||||
string query = $"SELECT count(Distinct {tableName}.{columName}) AS NUM FROM {tableName}";
|
||||
lock (objLock) {
|
||||
try {
|
||||
// Eseguo il comando
|
||||
System.Data.SQLite.SQLiteCommand cm = new SQLiteCommand(query, conn);
|
||||
long res = (long)cm.ExecuteScalar(System.Data.CommandBehavior.SingleResult);
|
||||
return res;
|
||||
} catch (Exception ex) {
|
||||
if (ex.Message == "Object reference not set to an instance of an object.") {
|
||||
// nessun record trovato che soddisfi la query
|
||||
return 0;
|
||||
} else {
|
||||
Logger.Error(string.Format("Error Code: {0} - Errore in {1}.{2}: {3}", "ER00100", System.Reflection.MethodInfo.GetCurrentMethod().DeclaringType.FullName, System.Reflection.MethodInfo.GetCurrentMethod().Name, ex.Message));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}//CountSimpleRecord
|
||||
|
||||
}//class Helper
|
||||
|
||||
public enum SaveResult {
|
||||
|
||||
@@ -0,0 +1,180 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace A69WD {
|
||||
|
||||
public class Navigator {
|
||||
|
||||
|
||||
#region Fields: buffer, indice, DB
|
||||
|
||||
/// <summary>
|
||||
/// Array interno che mi memorizza gli ID degli ultimi racconti visualizzati
|
||||
/// </summary>
|
||||
private long[] buffer = null;
|
||||
|
||||
/// <summary>
|
||||
/// Indice del racconto attualmente visualizzato
|
||||
/// </summary>
|
||||
private long indice = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Interfaccia con il database
|
||||
/// </summary>
|
||||
private DBTools DB = null;
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Costrutore
|
||||
|
||||
/// <summary>
|
||||
/// Costruttore
|
||||
/// </summary>
|
||||
/// <param name="size">Dimensione del buffer, cioè numero di racconti di cui tener memoria</param>
|
||||
public Navigator(int size) {
|
||||
buffer = new long[size];
|
||||
for (int i = 0; i < size; i++) { buffer[i] = -1; }
|
||||
DB = App.DB;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
#region Metodi di navigazione:
|
||||
|
||||
/// <summary>
|
||||
/// Ritorna l'ID del racconto attualmente visualizzato
|
||||
/// 0 indica la pagina home con il riepilogo del ATDB
|
||||
/// </summary>
|
||||
public long ActualID { get { return buffer[indice]; } }
|
||||
|
||||
/// <summary>
|
||||
/// Ritorna il riepilogo dell'archivio
|
||||
/// </summary>
|
||||
public string Home { get { return DB.Report; } }
|
||||
|
||||
/// <summary>
|
||||
/// Ritorna il testo del racconto successivo a quello visualizzato attualmente, nel buffer di navigazione
|
||||
/// </summary>
|
||||
public string Forward {
|
||||
get {
|
||||
// Aggiorno indice attuale:
|
||||
long tmp = indice + 1;
|
||||
if (tmp >= buffer.Length) tmp = 0;
|
||||
if (buffer[tmp] != -1) indice = tmp;
|
||||
|
||||
// Ritorno il testo del racconto:
|
||||
return DB.GetRacById(buffer[indice]).ToString();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ritorna il testo del racconto precedente a quello visualizzato attualmente, nel buffer di navigazione
|
||||
/// </summary>
|
||||
public string Backward {
|
||||
get {
|
||||
// Aggiorno indice attuale:
|
||||
long tmp = indice - 1;
|
||||
if (tmp < 0) tmp = buffer.Length - 1;
|
||||
if (buffer[tmp] != -1) indice = tmp;
|
||||
|
||||
// Ritorno il testo del racconto:
|
||||
return DB.GetRacById(buffer[indice]).ToString();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ritorna il testo del racconto con ID successivo a quello visualizzato attualmente
|
||||
/// </summary>
|
||||
public string Next {
|
||||
get {
|
||||
// Aggiorno indice attuale:
|
||||
long newID = buffer[indice];
|
||||
if (newID > 0) {
|
||||
newID++;
|
||||
return SwitchTo(newID);
|
||||
} else {
|
||||
return Refresh;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ritorna il testo del racconto con ID precedente a quello visualizzato attualmente
|
||||
/// </summary>
|
||||
public string Previous {
|
||||
get {
|
||||
// Aggiorno indice attuale:
|
||||
long newID = buffer[indice];
|
||||
if (newID > 1) {
|
||||
newID--;
|
||||
return SwitchTo(newID);
|
||||
} else {
|
||||
return Refresh;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ricarica il testo del racconto attuale
|
||||
/// </summary>
|
||||
public string Refresh {
|
||||
get {
|
||||
if (buffer[indice] > 0) {
|
||||
return DB.GetRacById(buffer[indice]).ToString();
|
||||
} else { return Home; }
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ritorna il testo di un racconto scelto casualmente nel DB
|
||||
/// </summary>
|
||||
public string RandomRac {
|
||||
get {
|
||||
// Aggiorno indice attuale:
|
||||
indice++;
|
||||
if (indice >= buffer.Length) indice = 0;
|
||||
buffer[indice] = DB.GetRandomIDrac();
|
||||
|
||||
// Ritorno il testo del racconto:
|
||||
return DB.GetRacById(buffer[indice]).ToString();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ritorna l'ID del nuovo racconto prendendo quello indicato
|
||||
/// </summary>
|
||||
/// <param name="NewIdRac">ID del racconto da visualizzare</param>
|
||||
/// <returns></returns>
|
||||
public string SwitchTo(long NewIdRac) {
|
||||
// Aggiorno indice attuale:
|
||||
indice++;
|
||||
if (indice >= buffer.Length) indice = 0;
|
||||
buffer[indice] = NewIdRac;
|
||||
|
||||
// Ritorno il testo del racconto:
|
||||
return DB.GetRacById(buffer[indice]).ToString();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Ricarica il testo del racconto attuale
|
||||
/// </summary>
|
||||
public string UpdateVoto(string newVoto) {
|
||||
long id = buffer[indice];
|
||||
if (id > 0) {
|
||||
DB.UpdateVoto(id, newVoto);
|
||||
return DB.GetRacById(id).ToString();
|
||||
} else { return Home; }
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
|
||||
}//class Navigator
|
||||
}//namespace A69WD
|
||||
Generated
+116
@@ -0,0 +1,116 @@
|
||||
namespace A69WD.UI {
|
||||
partial class frmReader {
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing) {
|
||||
if (disposing && (components != null)) {
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent() {
|
||||
this.rtb = new System.Windows.Forms.RichTextBox();
|
||||
this.sb = new System.Windows.Forms.StatusStrip();
|
||||
this.sbMessage = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.sbProgressBar = new System.Windows.Forms.ToolStripProgressBar();
|
||||
this.sbStatusLabel = new System.Windows.Forms.ToolStripStatusLabel();
|
||||
this.sb.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// rtb
|
||||
//
|
||||
this.rtb.BackColor = System.Drawing.Color.White;
|
||||
this.rtb.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.rtb.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.rtb.Font = new System.Drawing.Font("Verdana", 11.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.rtb.Location = new System.Drawing.Point(0, 0);
|
||||
this.rtb.Name = "rtb";
|
||||
this.rtb.Size = new System.Drawing.Size(700, 420);
|
||||
this.rtb.TabIndex = 3;
|
||||
this.rtb.Text = "";
|
||||
this.rtb.KeyDown += new System.Windows.Forms.KeyEventHandler(this.KeyDownAnalisi);
|
||||
//
|
||||
// sb
|
||||
//
|
||||
this.sb.AutoSize = false;
|
||||
this.sb.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.sbMessage,
|
||||
this.sbProgressBar,
|
||||
this.sbStatusLabel});
|
||||
this.sb.Location = new System.Drawing.Point(0, 420);
|
||||
this.sb.Name = "sb";
|
||||
this.sb.Size = new System.Drawing.Size(700, 24);
|
||||
this.sb.TabIndex = 2;
|
||||
this.sb.Text = "statusStrip1";
|
||||
//
|
||||
// sbMessage
|
||||
//
|
||||
this.sbMessage.BorderSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Top)
|
||||
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
|
||||
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
|
||||
this.sbMessage.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
|
||||
this.sbMessage.Name = "sbMessage";
|
||||
this.sbMessage.Size = new System.Drawing.Size(472, 19);
|
||||
this.sbMessage.Spring = true;
|
||||
this.sbMessage.Text = "Messaggi";
|
||||
this.sbMessage.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||
this.sbMessage.ToolTipText = "Messaggio";
|
||||
//
|
||||
// sbProgressBar
|
||||
//
|
||||
this.sbProgressBar.Name = "sbProgressBar";
|
||||
this.sbProgressBar.Size = new System.Drawing.Size(60, 18);
|
||||
this.sbProgressBar.ToolTipText = "Percentuale di lavoro";
|
||||
//
|
||||
// sbStatusLabel
|
||||
//
|
||||
this.sbStatusLabel.AutoSize = false;
|
||||
this.sbStatusLabel.BorderSides = ((System.Windows.Forms.ToolStripStatusLabelBorderSides)((((System.Windows.Forms.ToolStripStatusLabelBorderSides.Left | System.Windows.Forms.ToolStripStatusLabelBorderSides.Top)
|
||||
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Right)
|
||||
| System.Windows.Forms.ToolStripStatusLabelBorderSides.Bottom)));
|
||||
this.sbStatusLabel.BorderStyle = System.Windows.Forms.Border3DStyle.SunkenInner;
|
||||
this.sbStatusLabel.Name = "sbStatusLabel";
|
||||
this.sbStatusLabel.Size = new System.Drawing.Size(120, 19);
|
||||
this.sbStatusLabel.ToolTipText = "Stato di eventuali operazioni in background";
|
||||
//
|
||||
// frmReader
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(700, 444);
|
||||
this.ControlBox = false;
|
||||
this.Controls.Add(this.rtb);
|
||||
this.Controls.Add(this.sb);
|
||||
this.Name = "frmReader";
|
||||
this.Text = "PlugIn_App_Reader.UI Reader (DB vrs1.3, App" +
|
||||
" vrsX.X.X.X)";
|
||||
this.sb.ResumeLayout(false);
|
||||
this.sb.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.RichTextBox rtb;
|
||||
private System.Windows.Forms.StatusStrip sb;
|
||||
private System.Windows.Forms.ToolStripStatusLabel sbMessage;
|
||||
private System.Windows.Forms.ToolStripProgressBar sbProgressBar;
|
||||
private System.Windows.Forms.ToolStripStatusLabel sbStatusLabel;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,631 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using A69WD.Data;
|
||||
|
||||
namespace A69WD.UI {
|
||||
public partial class frmReader : Form {
|
||||
|
||||
|
||||
public frmReader() {
|
||||
InitializeComponent();
|
||||
|
||||
// Imposto caption:
|
||||
this.Text = String.Format("A69WD - Reader Vrs {0}", cTools.AssemblyVersion);
|
||||
|
||||
// Imposto field interni:
|
||||
nav = new Navigator(25);
|
||||
|
||||
// Visualizzo la pagina iniziale di riepilogo dell'archivio
|
||||
rtb.Text = nav.Home;
|
||||
|
||||
// Aggiorno la status bar
|
||||
sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gestione della navigazione fra i racconti
|
||||
/// </summary>
|
||||
private Navigator nav = null;
|
||||
|
||||
|
||||
private void KeyDownAnalisi(object sender, KeyEventArgs e) {
|
||||
|
||||
#region Keys.F1 --> Show Help
|
||||
//if (e.KeyCode == Keys.F1) {
|
||||
// sbMessage.Text = "Show Help";
|
||||
// MessageBox.Show(this, Help(), "Help", MessageBoxButtons.OK);
|
||||
// return;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Keys.ESC --> Hide Reader
|
||||
if (e.KeyCode == Keys.Escape) {
|
||||
this.Hide();
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.F2 --> Show Rac by ID
|
||||
//if (e.KeyCode == Keys.F2) {
|
||||
// // Form per richiedere l'ID di un racconto specifico da visualizzare:
|
||||
// frmRqId frmi = new frmRqId();
|
||||
// frmi.Left = Left + (Width - frmi.Width) / 2;
|
||||
// frmi.Top = Top + (Height - frmi.Height) / 2;
|
||||
// // Visualizzo il racconto richiesto:
|
||||
// if (frmi.ShowDialog() == DialogResult.OK) {
|
||||
// rtb.Text = nav.SwitchTo(frmi.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// frmi.Close();
|
||||
// return;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Keys.F3 --> Show Rac random
|
||||
if (e.KeyCode == Keys.F3) {
|
||||
// Show New Random Rac
|
||||
rtb.Text = nav.RandomRac;
|
||||
sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.F4 --> Genera un racconto nuovo
|
||||
if (e.KeyCode == Keys.F4) {
|
||||
// Genera un racconto nuovo
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.AppendLine("- ID Rac: 0");
|
||||
sb.AppendLine("- Title: Titolo del nuovo racconto");
|
||||
sb.AppendLine("- SubTit: ");
|
||||
sb.AppendLine("- Autors: Mrk");
|
||||
sb.AppendLine("- Voto: Non Letto");
|
||||
sb.AppendLine("- Tags: Uncategorized");
|
||||
sb.AppendLine("- Notes: SrcFile -|- Generated Internally");
|
||||
sb.AppendLine(string.Format("- Creato: {0}", DateTime.Now.ToString("yyyy/MM/dd")));
|
||||
sb.AppendLine(string.Format("- Update: {0}", DateTime.Now.ToString("yyyy/MM/dd")));
|
||||
sb.AppendLine("- Origin: Mrk");
|
||||
sb.AppendLine("- Trama: Trama del nuovo racconto");
|
||||
rtb.Text = sb.ToString();
|
||||
System.Windows.Forms.Clipboard.SetText(sb.ToString());
|
||||
sbMessage.Text = string.Format("Generato un racconto nuovo, salvarlo con F8");
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.F5 --> Refresh Rac
|
||||
if (e.KeyCode == Keys.F5) {
|
||||
rtb.Text = nav.Refresh;
|
||||
sbMessage.Text = string.Format("Racconto {0} Refresh", nav.ActualID.ToString("00000"));
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.F8 --> Edit Rac
|
||||
if (e.KeyCode == Keys.F8) {
|
||||
// Edit Rac
|
||||
// Rileggo il testo che visualizzo (e che ho eventualmente editato) per recuperare i testi in esso e li salvo
|
||||
// Se ID=0 o non specificato, aggiungo il testo come nuovo, altrimenti faccio l'update del racconto.
|
||||
cRac[] racs = null;
|
||||
int res = cRac.Read(rtb.Text, out racs);
|
||||
if (res > 0) {
|
||||
rtb.Text = string.Format("Trovati {0} racconti:\r\n", racs.Length);
|
||||
res = 0;
|
||||
foreach (cRac rac in racs) {
|
||||
// Aggiorno il racconto in memoria
|
||||
res += App.DB.UpdateRac(rac);
|
||||
}
|
||||
if (res == racs.Length) {
|
||||
rtb.Text = nav.SwitchTo(racs[0].IDrac);
|
||||
sbMessage.Text = string.Format("Importato/Aggiornato correttamente {0} racconti", res.ToString("00000"));
|
||||
} else {
|
||||
rtb.Text = App.DB.GetRacById(nav.ActualID).ToString();
|
||||
sbMessage.Text = string.Format("Errore in lettura di {0}", nav.ActualID.ToString("00000"));
|
||||
}
|
||||
} else {
|
||||
rtb.Text = "Lettura del racconto non riuscita";
|
||||
}
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.F10 --> Bookmarks
|
||||
if (e.KeyCode == Keys.F10) {
|
||||
// ToDo: Keys.F10 --> Bookmarks
|
||||
sbMessage.Text = "Keys.F10 --> Comando in sviluppo, non tutte le funzioni sono completate";
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.F12 --> Votazione
|
||||
//if (e.KeyCode == Keys.F12 && (!e.Control) && (!e.Alt) && (!e.Shift)) {
|
||||
// // Vote Rac
|
||||
// long id = nav.ActualID;
|
||||
// if (id < 0) return;
|
||||
// frmVoto frmv = new frmVoto(App.DB.GetRacById(id));
|
||||
// frmv.Left = Left + (Width - frmv.Width) / 2;
|
||||
// frmv.Top = Top + (Height - frmv.Height) / 2;
|
||||
// if (frmv.ShowDialog() == DialogResult.OK) {
|
||||
// rtb.Text = nav.UpdateVoto(frmv.Voto);
|
||||
// sbMessage.Text = string.Format("Racconto {0} Voted", nav.ActualID.ToString("00000"));
|
||||
// } else {
|
||||
// rtb.Text = nav.Refresh;
|
||||
// sbMessage.Text = string.Format("Racconto {0} Refresh", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// frmv.Close();
|
||||
// return;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.H --> Home
|
||||
if (e.Alt && (e.KeyCode == Keys.H)) {
|
||||
rtb.Text = nav.Home;
|
||||
sbMessage.Text = string.Format("Home {0}", nav.ActualID.ToString("00000"));
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+Keys.Left --> Navigazione backward fra i racconti già visualizzati
|
||||
if (e.Alt && (e.KeyCode == Keys.Left)) {
|
||||
// Show Rac Backward
|
||||
rtb.Text = nav.Backward;
|
||||
sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.Right --> Navigazione forward fra i racconti già visualizzati
|
||||
if (e.Alt && (e.KeyCode == Keys.Right)) {
|
||||
// Show Rac Forward
|
||||
rtb.Text = nav.Forward;
|
||||
sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.Down --> Navigazione verso il racconto con ID precedente (ID Meno 1) a quello visualizzato
|
||||
if (e.Alt && (e.KeyCode == Keys.Down)) {
|
||||
// Show Rac Meno 1
|
||||
rtb.Text = nav.Previous;
|
||||
sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.Up --> Navigazione verso il racconto con ID successivo (ID Più 1) a quello visualizzato
|
||||
if (e.Alt && (e.KeyCode == Keys.Up)) {
|
||||
// Show Rac Più 1
|
||||
rtb.Text = nav.Next;
|
||||
sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.+ --> Incrementa la dimensione del font
|
||||
if (e.Alt && (e.KeyCode == Keys.Add)) {
|
||||
// Increse text size
|
||||
Font f = new System.Drawing.Font(rtb.Font.FontFamily, rtb.Font.Size + 1.0F);
|
||||
rtb.Font = f;
|
||||
sbMessage.Text = string.Format("Racconto {0} Size Increase", nav.ActualID.ToString("00000"));
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.- --> Decrementa la dimensione del font
|
||||
if (e.Alt && (e.KeyCode == Keys.Subtract)) {
|
||||
// Decrease text size
|
||||
Font f = new System.Drawing.Font(rtb.Font.FontFamily, rtb.Font.Size - 1.0F);
|
||||
rtb.Font = f;
|
||||
sbMessage.Text = string.Format("Racconto {0} Size Decrease", nav.ActualID.ToString("00000"));
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.* --> Imposta il font alla dimensione di default
|
||||
if (e.Alt && (e.KeyCode == Keys.Multiply)) {
|
||||
// Reset text size
|
||||
Font f = new System.Drawing.Font(rtb.Font.FontFamily, (float)10.0);
|
||||
rtb.Font = f;
|
||||
sbMessage.Text = string.Format("Racconto {0} Size Default", nav.ActualID.ToString("00000"));
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.F --> Editazione filtri:
|
||||
//if (e.Alt && (e.KeyCode == Keys.F)) {
|
||||
// // preparo l'interfaccia per la gestione filtri:
|
||||
// frmFilters frmF = new frmFilters(DB);
|
||||
// frmF.Left = Left + (Width - frmF.Width) / 2;
|
||||
// frmF.Top = Top + (Height - frmF.Height) / 2;
|
||||
// // Visualizzo l'interfaccia:
|
||||
// if (frmF.ShowDialog() == DialogResult.OK) { sbMessage.Text = string.Format("FVoti: {0} - FTags: {1}", DB.FVoti, DB.FTags); }
|
||||
// frmF.Close();
|
||||
// return;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.A --> Navigazione fra i racconti dello stesso autore
|
||||
//if (e.Alt && (e.KeyCode == Keys.A)) {
|
||||
// // Show All Rac of this Autor
|
||||
// frmList frml = new frmList();
|
||||
// frml.Height = this.Height - 64;
|
||||
// frml.Width = this.Width - 64;
|
||||
// frml.Left = Left + (Width - frml.Width) / 2;
|
||||
// frml.Top = Top + (Height - frml.Height) / 2;
|
||||
// frml.Title = "Racconti dell'autore:";
|
||||
// int res = DB.GetListByRacAutor(nav.ActualID, frml.LV);
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// // Se racconto selezionato è uno solo, lo visualizzo, altrimenti mostro nuovo elenco
|
||||
// if (frml.Num > 1) {
|
||||
// // più racconti dallo stesso titolo:
|
||||
// res = DB.GetListByTitle(frml.Descr, frml.LV);
|
||||
// frml.Title = "Racconti con il titolo: " + frml.Descr;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// } else {
|
||||
// // 1 solo racconto
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// }
|
||||
// frml.Close();
|
||||
// return;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.T --> Navigazione fra i racconti via tag:
|
||||
//if (e.Alt && (e.KeyCode == Keys.T)) {
|
||||
// // Show All Tag
|
||||
// frmList frml = new frmList();
|
||||
// frml.Height = this.Height - 64;
|
||||
// frml.Width = this.Width - 64;
|
||||
// frml.Left = Left + (Width - frml.Width) / 2;
|
||||
// frml.Top = Top + (Height - frml.Height) / 2;
|
||||
// frml.Title = "Elenco Tags:";
|
||||
// int res = DB.GetListTags(nav.ActualID, frml.LV);
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// // Show all rac del tag selezionato
|
||||
// res = DB.GetListByTags(frml.ID, frml.LV);
|
||||
// frml.Title = "Racconti del tag: " + frml.Descr;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// // Se racconto selezionato è uno solo, lo visualizzo, altrimenti mostro nuovo elenco
|
||||
// if (frml.Num > 1) {
|
||||
// // più racconti dallo stesso titolo:
|
||||
// res = DB.GetListByTitle(frml.Descr, frml.LV);
|
||||
// frml.Title = "Racconti con il titolo: " + frml.Descr;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// } else {
|
||||
// // 1 solo racconto
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// frml.Close();
|
||||
// return;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.V --> Navigazione fra i racconti via Voto:
|
||||
//if (e.Alt && (e.KeyCode == Keys.V)) {
|
||||
// // Show All Voto
|
||||
// frmList frml = new frmList();
|
||||
// frml.Height = this.Height - 64;
|
||||
// frml.Width = this.Width - 64;
|
||||
// frml.Left = Left + (Width - frml.Width) / 2;
|
||||
// frml.Top = Top + (Height - frml.Height) / 2;
|
||||
// frml.Title = "Elenco Voti Assegnati:";
|
||||
// int res = DB.GetListVoti(nav.ActualID, frml.LV);
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// // Show all rac del tag selezionato
|
||||
// frml.Title = "Racconti del voto: " + frml.Descr;
|
||||
// res = DB.GetListByVoto(frml.ID, frml.LV);
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// }
|
||||
// frml.Close();
|
||||
// return;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.D --> Navigazione fra i racconti via Data:
|
||||
//if (e.Alt && (!e.Shift) && (e.KeyCode == Keys.D)) {
|
||||
// // Show All Year
|
||||
// frmList frml = new frmList();
|
||||
// frml.Height = this.Height - 64;
|
||||
// frml.Width = this.Width - 64;
|
||||
// frml.Left = Left + (Width - frml.Width) / 2;
|
||||
// frml.Top = Top + (Height - frml.Height) / 2;
|
||||
// frml.Title = "Elenco per anno di creazione:";
|
||||
// int res = DB.GetListByCreationDate(frml.LV);
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// if (frml.Num == 1) {
|
||||
// // Per l'anno vi è 1 solo racconto, e quindi lo mostro direttamente:
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// } else {
|
||||
// // Show all Month dell'anno selezionato
|
||||
// string strYear = frml.Descr;
|
||||
// res = DB.GetListByYear(strYear, frml.LV);
|
||||
// frml.Title = "Elenco mesi dell'anno " + strYear;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// if (frml.Num == 1) {
|
||||
// // Per l'anno e mese selezionato, vi è 1 solo racconto, e quindi lo mostro direttamente:
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// } else {
|
||||
// // Show all Days del mese, dell'anno, selezionato
|
||||
// string strMonth = frml.Descr;
|
||||
// res = DB.GetListByMonth(strYear, strMonth, frml.LV);
|
||||
// frml.Title = "Elenco giorni del mese " + strMonth + "/" + strYear;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// if (frml.Num == 1) {
|
||||
// // solo un racconto nel mese indicato, lo visualizzo subito
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// } else {
|
||||
// string strDay = frml.Descr;
|
||||
// res = DB.GetListByDay(strYear, strMonth, strDay, frml.LV);
|
||||
// frml.Title = "Elenco racconti del giorno " + strDay + "/" + strMonth + "/" + strYear;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// // Se racconto selezionato è uno solo, lo visualizzo, altrimenti mostro nuovo elenco
|
||||
// if (frml.Num > 1) {
|
||||
// // più racconti dallo stesso titolo:
|
||||
// res = DB.GetListByTitle(frml.Descr, frml.LV);
|
||||
// frml.Title = "Racconti con il titolo: " + frml.Descr;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// } else {
|
||||
// // 1 solo racconto
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// frml.Close();
|
||||
// return;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.L --> Navigazione degli ultimi 25 racconti updated e non letti:
|
||||
//if (e.Alt && (e.KeyCode == Keys.L)) {
|
||||
// #region
|
||||
// // Show last 25 racconti updated:
|
||||
// frmList frml = new frmList();
|
||||
// frml.Height = this.Height - 64;
|
||||
// frml.Width = this.Width - 64;
|
||||
// frml.Left = Left + (Width - frml.Width) / 2;
|
||||
// frml.Top = Top + (Height - frml.Height) / 2;
|
||||
// frml.Title = "Ultimi 25 racconti modificati:";
|
||||
// int res = DB.GetListByUpdate(50, frml.LV);
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// // Vi è un solo racocnto e lo visualizzo:
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// frml.Close();
|
||||
// //this.Select();
|
||||
// return;
|
||||
// #endregion
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.I --> Navigazione fra i racconti via iniziale titolo:
|
||||
//if (e.Alt && (!e.Shift) && (e.KeyCode == Keys.I)) {
|
||||
// // Show All Iniziali
|
||||
// frmList frml = new frmList();
|
||||
// frml.Height = this.Height - 64;
|
||||
// frml.Width = this.Width - 64;
|
||||
// frml.Left = Left + (Width - frml.Width) / 2;
|
||||
// frml.Top = Top + (Height - frml.Height) / 2;
|
||||
// frml.Title = "Elenco iniziali dei titoli:";
|
||||
// int res = DB.GetListByIniziali(frml.LV);
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// if (frml.Num == 1) {
|
||||
// // Per l'iniziale vi è 1 solo racconto, e quindi lo mostro direttamente:
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// } else {
|
||||
// // Show all titoli con l'iniziale selezionata
|
||||
// string iniziale = frml.Descr;
|
||||
// res = DB.GetListByIniziale(iniziale, frml.LV);
|
||||
// frml.Title = "Elenco titoli con l'iniziale " + iniziale;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// // Se racconto selezionato è uno solo, lo visualizzo, altrimenti mostro nuovo elenco
|
||||
// if (frml.Num > 1) {
|
||||
// // più racconti dallo stesso titolo:
|
||||
// res = DB.GetListByTitle(frml.Descr, frml.LV);
|
||||
// frml.Title = "Racconti con il titolo: " + frml.Descr;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// } else {
|
||||
// // 1 solo racconto
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// frml.Close();
|
||||
// return;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Shift+keys.Alt+keys.D --> Visualizza tutti i racconti non letti con la data attuale:
|
||||
//if (e.Alt && e.Shift && (e.KeyCode == Keys.D)) {
|
||||
// // ricavo la data del racconto visualizzato:
|
||||
// cRac rac = App.DB.GetRacById(nav.ActualID);
|
||||
// string strYear = rac.Creato.Year.ToString("0000");
|
||||
// string strMonth = rac.Creato.Month.ToString("00");
|
||||
// string strDay = rac.Creato.Day.ToString("00");
|
||||
// // Show tutti i racconti non letti della data indicata:
|
||||
// frmList frml = new frmList();
|
||||
// frml.Height = this.Height - 64;
|
||||
// frml.Width = this.Width - 64;
|
||||
// frml.Left = Left + (Width - frml.Width) / 2;
|
||||
// frml.Top = Top + (Height - frml.Height) / 2;
|
||||
// int res = DB.GetListByDay(strYear, strMonth, strDay, frml.LV);
|
||||
// frml.Title = "Elenco racconti del giorno " + strDay + "/" + strMonth + "/" + strYear;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// // Se racconto selezionato è uno solo, lo visualizzo, altrimenti mostro nuovo elenco
|
||||
// if (frml.Num > 1) {
|
||||
// // più racconti dallo stesso titolo:
|
||||
// res = DB.GetListByTitle(frml.Descr, frml.LV);
|
||||
// frml.Title = "Racconti con il titolo: " + frml.Descr;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// } else {
|
||||
// // 1 solo racconto
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// }
|
||||
// frml.Close();
|
||||
// return;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Shift+Keys.Alt+keys.I --> Navigazione fra i racconti con la stessa iniziale del titolo:
|
||||
//if (e.Alt && e.Shift && (e.KeyCode == Keys.I)) {
|
||||
// // ricavo L'iniziale del titolo del racocnto visualizzato:
|
||||
// cRac rac = App.DB.GetRacById(nav.ActualID);
|
||||
// string iniziale = rac.Title.Substring(0, 1);
|
||||
// // Show All Iniziali
|
||||
// frmList frml = new frmList();
|
||||
// frml.Height = this.Height - 64;
|
||||
// frml.Width = this.Width - 64;
|
||||
// frml.Left = Left + (Width - frml.Width) / 2;
|
||||
// frml.Top = Top + (Height - frml.Height) / 2;
|
||||
// int res = DB.GetListByIniziale(iniziale, frml.LV);
|
||||
// frml.Title = "Elenco titoli con l'iniziale " + iniziale;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// // Se racconto selezionato è uno solo, lo visualizzo, altrimenti mostro nuovo elenco
|
||||
// if (frml.Num > 1) {
|
||||
// // più racconti dallo stesso titolo:
|
||||
// res = DB.GetListByTitle(frml.Descr, frml.LV);
|
||||
// frml.Title = "Racconti con il titolo: " + frml.Descr;
|
||||
// if ((res > 0) && (frml.ShowDialog() == DialogResult.OK)) {
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// } else {
|
||||
// // 1 solo racconto
|
||||
// rtb.Text = nav.SwitchTo(frml.ID);
|
||||
// sbMessage.Text = string.Format("Racconto {0}", nav.ActualID.ToString("00000"));
|
||||
// }
|
||||
// }
|
||||
// frml.Close();
|
||||
// return;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Shift+keys.Alt+F12 --> Ricrea l'intero DB eliminando i racconti segnati da eliminare
|
||||
if (e.KeyCode == Keys.F12 && (!e.Control) && e.Alt && e.Shift) {
|
||||
// ToDo: Shift+Alt+F12 --> Ricrea l'intero DB eliminando i racconti segnati da eliminare
|
||||
sbMessage.Text = "Shift+Alt+F12 --> Comando in sviluppo, non tutte le funzioni sono completate";
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+Keys.Q --> Esegue una query personalizzata:
|
||||
if (e.Alt && (e.KeyCode == Keys.Z)) {
|
||||
// ToDo: Keys.Alt+Keys.Q --> Esegue una query personalizzata
|
||||
sbMessage.Text = "Keys.Alt+Keys.Q --> Comando in sviluppo, non tutte le funzioni sono completate";
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.Z --> Analisi Racconti Duplicati:
|
||||
if (e.Alt && (e.KeyCode == Keys.Z)) {
|
||||
// ToDo: Keys.Alt+keys.Z --> Analisi Racconti Duplicati:
|
||||
sbMessage.Text = "Shift+Alt+F12 --> Comando in sviluppo, non tutte le funzioni sono completate";
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.S --> Crea uno snapshot di n racconti formattati e li converte in ebook
|
||||
//if (e.Alt && (e.KeyCode == Keys.S)) {
|
||||
// // // ToDo: Keys.Alt+keys.S --> Crea uno snapshot di n racconti formattati e li converte in ebook
|
||||
// // sbMessage.Text = "Keys.Alt+keys.S --> Comando in sviluppo, non tutte le funzioni sono completate";
|
||||
// // return;
|
||||
// cmdCreaEbook();
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region Keys.Alt+keys.U --> Unione di due racconti
|
||||
//if (e.Alt && (e.KeyCode == Keys.U)) {
|
||||
// // ToDo: Keys.Alt+keys.U --> Unione di due racconti
|
||||
// // - chiede l'ID dei due racconti da unire
|
||||
// frmIDs frmid = new frmIDs();
|
||||
// frmid.Left = Left + (Width - frmid.Width) / 2;
|
||||
// frmid.Top = Top + (Height - frmid.Height) / 2;
|
||||
// if (frmid.ShowDialog() != DialogResult.OK) {
|
||||
// sbMessage.Text = "Anullato inserimento degli ID dei racconti da unire";
|
||||
// return;
|
||||
// }
|
||||
// if ((frmid.IDleft <= 0) || (frmid.IDright <= 0)) {
|
||||
// sbMessage.Text = "ID dei racconti da unire non validi";
|
||||
// return;
|
||||
// }
|
||||
// // - ricavo i due racconti da unire:
|
||||
// cRac left = DB.GetRacById(frmid.IDleft);
|
||||
// cRac right = DB.GetRacById(frmid.IDright);
|
||||
// frmid.Close();
|
||||
// // - visualizza il form di unione
|
||||
// frmUnion frm = new frmUnion(left, right, DB);
|
||||
// if (frm.ShowDialog() == DialogResult.OK) {
|
||||
// // - Left: il racconto unione:
|
||||
// left = frm.Unione;
|
||||
// // - Right: lo indico come duplicato:
|
||||
// right.Title = "Doppione";
|
||||
// right.SubTitle = left.strIDrac;
|
||||
// right.Voto = "Da Cancellare";
|
||||
// right.Tags.Clear();
|
||||
// right.Tags.Add("Doppione");
|
||||
// right.Notes.Clear();
|
||||
// right.Notes.Add(new cNota("SrcFile", "Doppione"));
|
||||
// right.Trama = "Racconto duplicato del " + left.strIDrac;
|
||||
// // - Aggiorno il DB
|
||||
// if ((right.IsValid) && (left.IsValid)) {
|
||||
// App.DB.UpdateRac(right);
|
||||
// App.DB.UpdateRac(left);
|
||||
// }
|
||||
// }
|
||||
// frm.Close();
|
||||
// return;
|
||||
//}
|
||||
#endregion
|
||||
|
||||
#region
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
<?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.Runtime.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:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<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" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</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" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="sb.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
</root>
|
||||
Reference in new issue
Block a user