Terminal.Gui.MainLoop.html 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524
  1. <!DOCTYPE html>
  2. <!--[if IE]><![endif]-->
  3. <html>
  4. <head>
  5. <meta charset="utf-8">
  6. <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  7. <title>Class MainLoop
  8. </title>
  9. <meta name="viewport" content="width=device-width">
  10. <meta name="title" content="Class MainLoop
  11. ">
  12. <meta name="generator" content="docfx 2.56.7.0">
  13. <link rel="shortcut icon" href="../../favicon.ico">
  14. <link rel="stylesheet" href="../../styles/docfx.vendor.css">
  15. <link rel="stylesheet" href="../../styles/docfx.css">
  16. <link rel="stylesheet" href="../../styles/main.css">
  17. <meta property="docfx:navrel" content="../../toc.html">
  18. <meta property="docfx:tocrel" content="toc.html">
  19. <meta property="docfx:rel" content="../../">
  20. </head>
  21. <body data-spy="scroll" data-target="#affix" data-offset="120">
  22. <div id="wrapper">
  23. <header>
  24. <nav id="autocollapse" class="navbar navbar-inverse ng-scope" role="navigation">
  25. <div class="container">
  26. <div class="navbar-header">
  27. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
  28. <span class="sr-only">Toggle navigation</span>
  29. <span class="icon-bar"></span>
  30. <span class="icon-bar"></span>
  31. <span class="icon-bar"></span>
  32. </button>
  33. <a class="navbar-brand" href="../../index.html">
  34. <img id="logo" class="svg" src="../../images/logo48.png" alt="">
  35. </a>
  36. </div>
  37. <div class="collapse navbar-collapse" id="navbar">
  38. <form class="navbar-form navbar-right" role="search" id="search">
  39. <div class="form-group">
  40. <input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
  41. </div>
  42. </form>
  43. </div>
  44. </div>
  45. </nav>
  46. <div class="subnav navbar navbar-default">
  47. <div class="container hide-when-search" id="breadcrumb">
  48. <ul class="breadcrumb">
  49. <li></li>
  50. </ul>
  51. </div>
  52. </div>
  53. </header>
  54. <div class="container body-content">
  55. <div id="search-results">
  56. <div class="search-list">Search Results for <span></span></div>
  57. <div class="sr-items">
  58. <p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
  59. </div>
  60. <ul id="pagination" data-first="First" data-prev="Previous" data-next="Next" data-last="Last"></ul>
  61. </div>
  62. </div>
  63. <div role="main" class="container body-content hide-when-search">
  64. <div class="sidenav hide-when-search">
  65. <a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
  66. <div class="sidetoggle collapse" id="sidetoggle">
  67. <div id="sidetoc"></div>
  68. </div>
  69. </div>
  70. <div class="article row grid-right">
  71. <div class="col-md-10">
  72. <article class="content wrap" id="_content" data-uid="Terminal.Gui.MainLoop">
  73. <h1 id="Terminal_Gui_MainLoop" data-uid="Terminal.Gui.MainLoop" class="text-break">Class MainLoop
  74. </h1>
  75. <div class="markdown level0 summary">
  76. Simple main loop implementation that can be used to monitor
  77. file descriptor, run timers and idle handlers.
  78. </div>
  79. <div class="markdown level0 conceptual"></div>
  80. <div class="inheritance">
  81. <h5>Inheritance</h5>
  82. <div class="level0"><span class="xref">System.Object</span></div>
  83. <div class="level1"><span class="xref">MainLoop</span></div>
  84. </div>
  85. <div class="inheritedMembers">
  86. <h5>Inherited Members</h5>
  87. <div>
  88. <span class="xref">System.Object.Equals(System.Object)</span>
  89. </div>
  90. <div>
  91. <span class="xref">System.Object.Equals(System.Object, System.Object)</span>
  92. </div>
  93. <div>
  94. <span class="xref">System.Object.GetHashCode()</span>
  95. </div>
  96. <div>
  97. <span class="xref">System.Object.GetType()</span>
  98. </div>
  99. <div>
  100. <span class="xref">System.Object.MemberwiseClone()</span>
  101. </div>
  102. <div>
  103. <span class="xref">System.Object.ReferenceEquals(System.Object, System.Object)</span>
  104. </div>
  105. <div>
  106. <span class="xref">System.Object.ToString()</span>
  107. </div>
  108. </div>
  109. <h6><strong>Namespace</strong>: <a class="xref" href="Terminal.Gui.html">Terminal.Gui</a></h6>
  110. <h6><strong>Assembly</strong>: Terminal.Gui.dll</h6>
  111. <h5 id="Terminal_Gui_MainLoop_syntax">Syntax</h5>
  112. <div class="codewrapper">
  113. <pre><code class="lang-csharp hljs">public class MainLoop</code></pre>
  114. </div>
  115. <h5 id="Terminal_Gui_MainLoop_remarks"><strong>Remarks</strong></h5>
  116. <div class="markdown level0 remarks">
  117. Monitoring of file descriptors is only available on Unix, there
  118. does not seem to be a way of supporting this on Windows.
  119. </div>
  120. <h3 id="constructors">Constructors
  121. </h3>
  122. <a id="Terminal_Gui_MainLoop__ctor_" data-uid="Terminal.Gui.MainLoop.#ctor*"></a>
  123. <h4 id="Terminal_Gui_MainLoop__ctor_Terminal_Gui_IMainLoopDriver_" data-uid="Terminal.Gui.MainLoop.#ctor(Terminal.Gui.IMainLoopDriver)">MainLoop(IMainLoopDriver)</h4>
  124. <div class="markdown level1 summary">
  125. Creates a new Mainloop.
  126. </div>
  127. <div class="markdown level1 conceptual"></div>
  128. <h5 class="decalaration">Declaration</h5>
  129. <div class="codewrapper">
  130. <pre><code class="lang-csharp hljs">public MainLoop(IMainLoopDriver driver)</code></pre>
  131. </div>
  132. <h5 class="parameters">Parameters</h5>
  133. <table class="table table-bordered table-striped table-condensed">
  134. <thead>
  135. <tr>
  136. <th>Type</th>
  137. <th>Name</th>
  138. <th>Description</th>
  139. </tr>
  140. </thead>
  141. <tbody>
  142. <tr>
  143. <td><a class="xref" href="Terminal.Gui.IMainLoopDriver.html">IMainLoopDriver</a></td>
  144. <td><span class="parametername">driver</span></td>
  145. <td>Should match the <a class="xref" href="Terminal.Gui.ConsoleDriver.html">ConsoleDriver</a> (one of the implementations UnixMainLoop, NetMainLoop or WindowsMainLoop).</td>
  146. </tr>
  147. </tbody>
  148. </table>
  149. <h3 id="properties">Properties
  150. </h3>
  151. <a id="Terminal_Gui_MainLoop_Driver_" data-uid="Terminal.Gui.MainLoop.Driver*"></a>
  152. <h4 id="Terminal_Gui_MainLoop_Driver" data-uid="Terminal.Gui.MainLoop.Driver">Driver</h4>
  153. <div class="markdown level1 summary">
  154. The current IMainLoopDriver in use.
  155. </div>
  156. <div class="markdown level1 conceptual"></div>
  157. <h5 class="decalaration">Declaration</h5>
  158. <div class="codewrapper">
  159. <pre><code class="lang-csharp hljs">public IMainLoopDriver Driver { get; }</code></pre>
  160. </div>
  161. <h5 class="propertyValue">Property Value</h5>
  162. <table class="table table-bordered table-striped table-condensed">
  163. <thead>
  164. <tr>
  165. <th>Type</th>
  166. <th>Description</th>
  167. </tr>
  168. </thead>
  169. <tbody>
  170. <tr>
  171. <td><a class="xref" href="Terminal.Gui.IMainLoopDriver.html">IMainLoopDriver</a></td>
  172. <td>The driver.</td>
  173. </tr>
  174. </tbody>
  175. </table>
  176. <h3 id="methods">Methods
  177. </h3>
  178. <a id="Terminal_Gui_MainLoop_AddIdle_" data-uid="Terminal.Gui.MainLoop.AddIdle*"></a>
  179. <h4 id="Terminal_Gui_MainLoop_AddIdle_System_Func_System_Boolean__" data-uid="Terminal.Gui.MainLoop.AddIdle(System.Func{System.Boolean})">AddIdle(Func&lt;Boolean&gt;)</h4>
  180. <div class="markdown level1 summary">
  181. Adds specified idle handler function to mainloop processing. The handler function will be called once per iteration of the main loop after other events have been handled.
  182. </div>
  183. <div class="markdown level1 conceptual"></div>
  184. <h5 class="decalaration">Declaration</h5>
  185. <div class="codewrapper">
  186. <pre><code class="lang-csharp hljs">public Func&lt;bool&gt; AddIdle(Func&lt;bool&gt; idleHandler)</code></pre>
  187. </div>
  188. <h5 class="parameters">Parameters</h5>
  189. <table class="table table-bordered table-striped table-condensed">
  190. <thead>
  191. <tr>
  192. <th>Type</th>
  193. <th>Name</th>
  194. <th>Description</th>
  195. </tr>
  196. </thead>
  197. <tbody>
  198. <tr>
  199. <td><span class="xref">System.Func</span>&lt;<span class="xref">System.Boolean</span>&gt;</td>
  200. <td><span class="parametername">idleHandler</span></td>
  201. <td>Token that can be used to remove the idle handler with <a class="xref" href="Terminal.Gui.MainLoop.html#Terminal_Gui_MainLoop_RemoveIdle_System_Func_System_Boolean__">RemoveIdle(Func&lt;Boolean&gt;)</a> .</td>
  202. </tr>
  203. </tbody>
  204. </table>
  205. <h5 class="returns">Returns</h5>
  206. <table class="table table-bordered table-striped table-condensed">
  207. <thead>
  208. <tr>
  209. <th>Type</th>
  210. <th>Description</th>
  211. </tr>
  212. </thead>
  213. <tbody>
  214. <tr>
  215. <td><span class="xref">System.Func</span>&lt;<span class="xref">System.Boolean</span>&gt;</td>
  216. <td></td>
  217. </tr>
  218. </tbody>
  219. </table>
  220. <h5 id="Terminal_Gui_MainLoop_AddIdle_System_Func_System_Boolean___remarks">Remarks</h5>
  221. <div class="markdown level1 remarks">
  222. <p>
  223. Remove an idle hander by calling <a class="xref" href="Terminal.Gui.MainLoop.html#Terminal_Gui_MainLoop_RemoveIdle_System_Func_System_Boolean__">RemoveIdle(Func&lt;Boolean&gt;)</a> with the token this method returns.
  224. </p>
  225. <p>
  226. If the <code>idleHandler</code> returns <code>false</code> it will be removed and not called subsequently.
  227. </p>
  228. </div>
  229. <a id="Terminal_Gui_MainLoop_AddTimeout_" data-uid="Terminal.Gui.MainLoop.AddTimeout*"></a>
  230. <h4 id="Terminal_Gui_MainLoop_AddTimeout_System_TimeSpan_System_Func_Terminal_Gui_MainLoop_System_Boolean__" data-uid="Terminal.Gui.MainLoop.AddTimeout(System.TimeSpan,System.Func{Terminal.Gui.MainLoop,System.Boolean})">AddTimeout(TimeSpan, Func&lt;MainLoop, Boolean&gt;)</h4>
  231. <div class="markdown level1 summary">
  232. Adds a timeout to the mainloop.
  233. </div>
  234. <div class="markdown level1 conceptual"></div>
  235. <h5 class="decalaration">Declaration</h5>
  236. <div class="codewrapper">
  237. <pre><code class="lang-csharp hljs">public object AddTimeout(TimeSpan time, Func&lt;MainLoop, bool&gt; callback)</code></pre>
  238. </div>
  239. <h5 class="parameters">Parameters</h5>
  240. <table class="table table-bordered table-striped table-condensed">
  241. <thead>
  242. <tr>
  243. <th>Type</th>
  244. <th>Name</th>
  245. <th>Description</th>
  246. </tr>
  247. </thead>
  248. <tbody>
  249. <tr>
  250. <td><span class="xref">System.TimeSpan</span></td>
  251. <td><span class="parametername">time</span></td>
  252. <td></td>
  253. </tr>
  254. <tr>
  255. <td><span class="xref">System.Func</span>&lt;<a class="xref" href="Terminal.Gui.MainLoop.html">MainLoop</a>, <span class="xref">System.Boolean</span>&gt;</td>
  256. <td><span class="parametername">callback</span></td>
  257. <td></td>
  258. </tr>
  259. </tbody>
  260. </table>
  261. <h5 class="returns">Returns</h5>
  262. <table class="table table-bordered table-striped table-condensed">
  263. <thead>
  264. <tr>
  265. <th>Type</th>
  266. <th>Description</th>
  267. </tr>
  268. </thead>
  269. <tbody>
  270. <tr>
  271. <td><span class="xref">System.Object</span></td>
  272. <td></td>
  273. </tr>
  274. </tbody>
  275. </table>
  276. <h5 id="Terminal_Gui_MainLoop_AddTimeout_System_TimeSpan_System_Func_Terminal_Gui_MainLoop_System_Boolean___remarks">Remarks</h5>
  277. <div class="markdown level1 remarks">
  278. When time time specified passes, the callback will be invoked.
  279. If the callback returns true, the timeout will be reset, repeating
  280. the invocation. If it returns false, the timeout will stop and be removed.
  281. The returned value is a token that can be used to stop the timeout
  282. by calling <a class="xref" href="Terminal.Gui.MainLoop.html#Terminal_Gui_MainLoop_RemoveTimeout_System_Object_">RemoveTimeout(Object)</a>.
  283. </div>
  284. <a id="Terminal_Gui_MainLoop_EventsPending_" data-uid="Terminal.Gui.MainLoop.EventsPending*"></a>
  285. <h4 id="Terminal_Gui_MainLoop_EventsPending_System_Boolean_" data-uid="Terminal.Gui.MainLoop.EventsPending(System.Boolean)">EventsPending(Boolean)</h4>
  286. <div class="markdown level1 summary">
  287. Determines whether there are pending events to be processed.
  288. </div>
  289. <div class="markdown level1 conceptual"></div>
  290. <h5 class="decalaration">Declaration</h5>
  291. <div class="codewrapper">
  292. <pre><code class="lang-csharp hljs">public bool EventsPending(bool wait = false)</code></pre>
  293. </div>
  294. <h5 class="parameters">Parameters</h5>
  295. <table class="table table-bordered table-striped table-condensed">
  296. <thead>
  297. <tr>
  298. <th>Type</th>
  299. <th>Name</th>
  300. <th>Description</th>
  301. </tr>
  302. </thead>
  303. <tbody>
  304. <tr>
  305. <td><span class="xref">System.Boolean</span></td>
  306. <td><span class="parametername">wait</span></td>
  307. <td></td>
  308. </tr>
  309. </tbody>
  310. </table>
  311. <h5 class="returns">Returns</h5>
  312. <table class="table table-bordered table-striped table-condensed">
  313. <thead>
  314. <tr>
  315. <th>Type</th>
  316. <th>Description</th>
  317. </tr>
  318. </thead>
  319. <tbody>
  320. <tr>
  321. <td><span class="xref">System.Boolean</span></td>
  322. <td></td>
  323. </tr>
  324. </tbody>
  325. </table>
  326. <h5 id="Terminal_Gui_MainLoop_EventsPending_System_Boolean__remarks">Remarks</h5>
  327. <div class="markdown level1 remarks">
  328. You can use this method if you want to probe if events are pending.
  329. Typically used if you need to flush the input queue while still
  330. running some of your own code in your main thread.
  331. </div>
  332. <a id="Terminal_Gui_MainLoop_Invoke_" data-uid="Terminal.Gui.MainLoop.Invoke*"></a>
  333. <h4 id="Terminal_Gui_MainLoop_Invoke_System_Action_" data-uid="Terminal.Gui.MainLoop.Invoke(System.Action)">Invoke(Action)</h4>
  334. <div class="markdown level1 summary">
  335. Runs <code>action</code> on the thread that is processing events
  336. </div>
  337. <div class="markdown level1 conceptual"></div>
  338. <h5 class="decalaration">Declaration</h5>
  339. <div class="codewrapper">
  340. <pre><code class="lang-csharp hljs">public void Invoke(Action action)</code></pre>
  341. </div>
  342. <h5 class="parameters">Parameters</h5>
  343. <table class="table table-bordered table-striped table-condensed">
  344. <thead>
  345. <tr>
  346. <th>Type</th>
  347. <th>Name</th>
  348. <th>Description</th>
  349. </tr>
  350. </thead>
  351. <tbody>
  352. <tr>
  353. <td><span class="xref">System.Action</span></td>
  354. <td><span class="parametername">action</span></td>
  355. <td>the action to be invoked on the main processing thread.</td>
  356. </tr>
  357. </tbody>
  358. </table>
  359. <a id="Terminal_Gui_MainLoop_MainIteration_" data-uid="Terminal.Gui.MainLoop.MainIteration*"></a>
  360. <h4 id="Terminal_Gui_MainLoop_MainIteration" data-uid="Terminal.Gui.MainLoop.MainIteration">MainIteration()</h4>
  361. <div class="markdown level1 summary">
  362. Runs one iteration of timers and file watches
  363. </div>
  364. <div class="markdown level1 conceptual"></div>
  365. <h5 class="decalaration">Declaration</h5>
  366. <div class="codewrapper">
  367. <pre><code class="lang-csharp hljs">public void MainIteration()</code></pre>
  368. </div>
  369. <h5 id="Terminal_Gui_MainLoop_MainIteration_remarks">Remarks</h5>
  370. <div class="markdown level1 remarks">
  371. You use this to process all pending events (timers, idle handlers and file watches).
  372. You can use it like this:
  373. while (main.EvensPending ()) MainIteration ();
  374. </div>
  375. <a id="Terminal_Gui_MainLoop_RemoveIdle_" data-uid="Terminal.Gui.MainLoop.RemoveIdle*"></a>
  376. <h4 id="Terminal_Gui_MainLoop_RemoveIdle_System_Func_System_Boolean__" data-uid="Terminal.Gui.MainLoop.RemoveIdle(System.Func{System.Boolean})">RemoveIdle(Func&lt;Boolean&gt;)</h4>
  377. <div class="markdown level1 summary">
  378. Removes an idle handler added with <a class="xref" href="Terminal.Gui.MainLoop.html#Terminal_Gui_MainLoop_AddIdle_System_Func_System_Boolean__">AddIdle(Func&lt;Boolean&gt;)</a> from processing.
  379. </div>
  380. <div class="markdown level1 conceptual"></div>
  381. <h5 class="decalaration">Declaration</h5>
  382. <div class="codewrapper">
  383. <pre><code class="lang-csharp hljs">public void RemoveIdle(Func&lt;bool&gt; token)</code></pre>
  384. </div>
  385. <h5 class="parameters">Parameters</h5>
  386. <table class="table table-bordered table-striped table-condensed">
  387. <thead>
  388. <tr>
  389. <th>Type</th>
  390. <th>Name</th>
  391. <th>Description</th>
  392. </tr>
  393. </thead>
  394. <tbody>
  395. <tr>
  396. <td><span class="xref">System.Func</span>&lt;<span class="xref">System.Boolean</span>&gt;</td>
  397. <td><span class="parametername">token</span></td>
  398. <td>A token returned by <a class="xref" href="Terminal.Gui.MainLoop.html#Terminal_Gui_MainLoop_AddIdle_System_Func_System_Boolean__">AddIdle(Func&lt;Boolean&gt;)</a></td>
  399. </tr>
  400. </tbody>
  401. </table>
  402. <a id="Terminal_Gui_MainLoop_RemoveTimeout_" data-uid="Terminal.Gui.MainLoop.RemoveTimeout*"></a>
  403. <h4 id="Terminal_Gui_MainLoop_RemoveTimeout_System_Object_" data-uid="Terminal.Gui.MainLoop.RemoveTimeout(System.Object)">RemoveTimeout(Object)</h4>
  404. <div class="markdown level1 summary">
  405. Removes a previously scheduled timeout
  406. </div>
  407. <div class="markdown level1 conceptual"></div>
  408. <h5 class="decalaration">Declaration</h5>
  409. <div class="codewrapper">
  410. <pre><code class="lang-csharp hljs">public void RemoveTimeout(object token)</code></pre>
  411. </div>
  412. <h5 class="parameters">Parameters</h5>
  413. <table class="table table-bordered table-striped table-condensed">
  414. <thead>
  415. <tr>
  416. <th>Type</th>
  417. <th>Name</th>
  418. <th>Description</th>
  419. </tr>
  420. </thead>
  421. <tbody>
  422. <tr>
  423. <td><span class="xref">System.Object</span></td>
  424. <td><span class="parametername">token</span></td>
  425. <td></td>
  426. </tr>
  427. </tbody>
  428. </table>
  429. <h5 id="Terminal_Gui_MainLoop_RemoveTimeout_System_Object__remarks">Remarks</h5>
  430. <div class="markdown level1 remarks">
  431. The token parameter is the value returned by AddTimeout.
  432. </div>
  433. <a id="Terminal_Gui_MainLoop_Run_" data-uid="Terminal.Gui.MainLoop.Run*"></a>
  434. <h4 id="Terminal_Gui_MainLoop_Run" data-uid="Terminal.Gui.MainLoop.Run">Run()</h4>
  435. <div class="markdown level1 summary">
  436. Runs the mainloop.
  437. </div>
  438. <div class="markdown level1 conceptual"></div>
  439. <h5 class="decalaration">Declaration</h5>
  440. <div class="codewrapper">
  441. <pre><code class="lang-csharp hljs">public void Run()</code></pre>
  442. </div>
  443. <a id="Terminal_Gui_MainLoop_Stop_" data-uid="Terminal.Gui.MainLoop.Stop*"></a>
  444. <h4 id="Terminal_Gui_MainLoop_Stop" data-uid="Terminal.Gui.MainLoop.Stop">Stop()</h4>
  445. <div class="markdown level1 summary">
  446. Stops the mainloop.
  447. </div>
  448. <div class="markdown level1 conceptual"></div>
  449. <h5 class="decalaration">Declaration</h5>
  450. <div class="codewrapper">
  451. <pre><code class="lang-csharp hljs">public void Stop()</code></pre>
  452. </div>
  453. </article>
  454. </div>
  455. <div class="hidden-sm col-md-2" role="complementary">
  456. <div class="sideaffix">
  457. <div class="contribution">
  458. <ul class="nav">
  459. </ul>
  460. </div>
  461. <nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
  462. <h5>In This Article</h5>
  463. <div></div>
  464. </nav>
  465. </div>
  466. </div>
  467. </div>
  468. </div>
  469. <footer>
  470. <div class="grad-bottom"></div>
  471. <div class="footer">
  472. <div class="container">
  473. <span class="pull-right">
  474. <a href="#top">Back to top</a>
  475. </span>
  476. <span>Generated by <strong>DocFX</strong></span>
  477. </div>
  478. </div>
  479. </footer>
  480. </div>
  481. <script type="text/javascript" src="../../styles/docfx.vendor.js"></script>
  482. <script type="text/javascript" src="../../styles/docfx.js"></script>
  483. <script type="text/javascript" src="../../styles/main.js"></script>
  484. </body>
  485. </html>