Manage your ASL charts, play aids and other documents.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
asl-charts/src/Program2.cs

81 lines
2.9 KiB

using System ;
using System.Text ;
using System.Security ;
using System.Windows.Forms ;
using System.Collections.Generic ;
using log4net ;
// --------------------------------------------------------------------
public static partial class Program
{
private class MyMessageFilter : IMessageFilter {
public bool PreFilterMessage( ref Message msg ) {
// check if we should filter this message
if ( Program.mainForm.preFilterMessage( ref msg ) )
return true ;
return false ;
}
}
private static void loadPredefinedSearchQueries( string fname )
{
// load the pre-defined search queries
JsonConfig jsonConfig = new JsonConfig( "pre-defined search queries", fname ) ;
ILog logger = LogManager.GetLogger( "shortcuts" ) ;
foreach( dynamic entry in jsonConfig.data ) {
string queryString = entry["query"] ?? "" ;
if ( queryString == "" ) {
Program.logStartupMsg( "bad-shortcut", $"{entry["shortcut"]}: Missing query string" ) ;
continue ;
}
string shortcutString = entry["shortcut"] ?? "" ;
Keys? keys = Shortcut.parseShortcutString( (string) shortcutString ) ;
if ( keys == null ) {
Program.logStartupMsg( "bad-shortcut", $"{queryString}: {shortcutString}" ) ;
continue ;
}
Shortcut shortcut = new SearchQueryShortcut( keys.Value, queryString ) ;
logger.Info( $"Registering search query shortcut: {shortcut} => {queryString}" ) ;
Shortcut.registerShortcut( shortcut ) ;
}
}
public static void logStartupMsg( string key, string msg )
{
// log the startup message
List<string> msgs ;
if ( ! mStartupMsgs.TryGetValue( key, out msgs ) )
mStartupMsgs[key] = msgs = new List<string>() ;
msgs.Add( msg ) ;
}
public static string getStartupMsgs( string key, string caption )
{
// check if there were any startup messages of the specified type
List<string> msgs ;
if ( ! mStartupMsgs.TryGetValue( key, out msgs ) || msgs.Count == 0 )
return "" ;
// NOTE: WebBrowser isn't really available with Mono, so we just log startup messages normally.
ILog logger = LogManager.GetLogger( "startup" ) ;
// generate a report for the specified startup messages
StringBuilder buf = new StringBuilder() ;
if ( caption != "" ) {
buf.Append( caption ) ;
logger.Warn( caption ) ;
}
buf.Append( "<ul>" ) ;
foreach ( string msg in msgs ) {
buf.Append( "<li> " + SecurityElement.Escape(msg) ) ;
logger.Warn( (caption != "") ? $"- {msg}" : msg ) ;
}
buf.Append( "</ul>" ) ;
return buf.ToString() ;
}
}