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 msgs ; if ( ! mStartupMsgs.TryGetValue( key, out msgs ) ) mStartupMsgs[key] = msgs = new List() ; msgs.Add( msg ) ; } public static string getStartupMsgs( string key, string caption ) { // check if there were any startup messages of the specified type List 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( "
    " ) ; foreach ( string msg in msgs ) { buf.Append( "
  • " + SecurityElement.Escape(msg) ) ; logger.Warn( (caption != "") ? $"- {msg}" : msg ) ; } buf.Append( "
" ) ; return buf.ToString() ; } }