public static void Main(string[] argsArray) { Thread.CurrentThread.SetInvariantCulture(); // This is required to get all required build tools in path // See https://github.com/fusetools/Fuse/issues/4245 for details if (Platform.OperatingSystem == OS.Mac) { Environment.SetEnvironmentVariable("PATH", "/usr/local/bin:" + Environment.GetEnvironmentVariable("PATH")); } var argumentList = argsArray.ToList(); var fuse = FuseApi.Initialize("Designer", argumentList); var shell = new Shell(); var errors = new ReplaySubject <Exception>(1); if (!Application.InitializeAsDocumentApp(argumentList, "Fusetools.Fuse")) { return; } // Initialize console redirection early to show output during startup in debug window ConsoleOutputWindow.InitializeConsoleRedirection(); UserSettings.Settings = PersistentSettings.Load( usersettingsfile: fuse.UserDataDir / new FileName("designer-config.json"), onError: errors.OnNext); var daemon = fuse.ConnectOrSpawnAsync("Designer").ToObservable().Switch(); //var previewPlatform = Platform.OperatingSystem == OS.Mac // ? (IPlatform)new MacPlatform(fuse.MonoExe.Value.NativePath) // : (IPlatform)new WindowsPlatform(); var previewService = new PreviewService(); Application.Terminating += previewService.Dispose; var openProject = new OpenProject( previewService, shell, fuse, daemon, errors); var createProject = new CreateProject(fuse); var splashWindow = new Dashboard(createProject, fuse); Application.CreateDocumentWindow = document => openProject.Execute(document, argumentList.ToArray()); Application.LaunchedWithoutDocuments = splashWindow.Show; Application.Run(); }
static void Main(string[] argsArray) { var run = true; var args = argsArray.ToList(); var fuse = FuseApi.Initialize("CodeAssistanceService", args); var daemon = fuse.Connect("Code Assistance Service", TimeSpan.FromSeconds(30)); daemon.ConnectionLost.Subscribe(d => run = false); var codeCompletionInstance = new CodeCompletionInstance(new ProjectDetector(new Shell())); daemon.Provide <GetCodeSuggestionsRequest, GetCodeSuggestionsResponse>( codeCompletionInstance.HandleGetCodeSuggestions); daemon.Provide <GotoDefinitionRequest, GotoDefinitionResponse>(codeCompletionInstance.HandleGotoDefinition); while (run) { Thread.Sleep(500); } }
static void Main() { var args = Environment.GetCommandLineArgs().ToList(); var fuse = FuseApi.Initialize("Tray", args); var log = fuse.Report; var native = Application.Initialize(args); var client = fuse.ConnectAsync("Fuse Tray"); var app = native.CreateTrayApplication( log, title: Observable.Return(""), icon: Observable.Return( Icon.FromResource( Platform.OperatingSystem == OS.Mac ? "Outracks.Fuse.Notifier.Resources.Fuse.icns" : "Outracks.Fuse.Notifier.Resources.Fuse.ico")), menu: Menu.Item( "Fuse v. " + fuse.Version, command: Command.Disabled) + Menu.Separator + Menu.Item( Platform.OperatingSystem == OS.Mac ? "Quit" : "Exit", async() => await Exit(client))); // Exit on connection lost client.ToObservable().SelectMany(c => c.ConnectionLost).Subscribe(d => Application.Exit(0)); // Start dashboard on click app.UserClicked.Subscribe(clicks => fuse.Designer.Start()); Application.Run(); }