def __present__(self, fragment): def _on_reload(event): self.__user_docs.reload() if self.__docs is not None: self.__docs.reload() reset_button = button.button('Reload', _on_reload) reset_section = Html('<div>', reset_button, '</div>') add_notebook = menu.item('Notebook', lambda event: self.__tools.add(NewDocumentTool(self.__user_docs, notebook.Notebook, 'Notebook'))) add_project = menu.item('Project', lambda event: self.__tools.add(NewDocumentTool(self.__user_docs, project_root.ProjectRoot, 'Project'))) new_item = menu.sub_menu('New', [add_notebook, add_project]) new_document_menu = menu.menu([new_item], drop_down=True) upload_ipynb = menu.item('Upload', lambda event: self.__tools.add(UploadIPynbTool(self.__user_docs))) web_ipynb = menu.item('Download from web', lambda event: self.__tools.add(DownloadIPynbFromWebTool(self.__user_docs))) import_ipynb_item = menu.sub_menu('Import IPython notebook', [upload_ipynb, web_ipynb]) import_ipynb_menu = menu.menu([import_ipynb_item], drop_down=True) document_controls = Html('<table class="larch_app_controls_row"><tr><td class="larch_app_control">', new_document_menu, '</td>', '<td class="larch_app_control">', import_ipynb_menu, '</td></tr></table>') contents = [""" <div class="larch_app_title_bar">The Ubiquitous Larch</div> <div class="larch_app_enclosure"> <section class="larch_app_docs_section"> <h2>Open documents:</h2> """, reset_section, self.__user_docs, document_controls, self.__tools, """</section> <section> <p>For more information on using the Ubiquitous Larch, please see the <a href="/pages/docs/index">documentation</a>.</p> </section> <p class="larch_app_powered_by">The Ubiquitous Larch © copyright Geoffrey French<br/> Powered by <a class="larch_app_pwr_link" href="http://www.python.org">Python</a>, <a class="larch_app_pwr_link" href="http://flask.pocoo.org">Flask</a>/<a class="larch_app_pwr_link" href="http://bottlepy.org">Bottle</a>/<a class="larch_app_pwr_link" href="http://www.djangoproject.com/">Django</a>, <a class="larch_app_pwr_link" href="http://jquery.com/">jQuery</a>, <a class="larch_app_pwr_link" href="http://www.json.org/js.html">json.js</a>, <a class="larch_app_pwr_link" href="http://codemirror.net/">Code Mirror</a>, <a class="larch_app_pwr_link" href="http://ckeditor.com/">ckEditor</a>, <a class="larch_app_pwr_link" href="http://d3js.org/">d3.js</a>, <a class="larch_app_pwr_link" href="http://imakewebthings.com/deck.js/">deck.js</a> and <a class="larch_app_pwr_link" href="http://needim.github.io/noty/">noty</a></p> </div> """] return Html(*contents).use_css(url=larch_app_css)
def _present_menu_items(self, fragment, tool_container): def on_new_package(event): tool_container.value = NewNodeTool( tool_container, self, 'package', 'Package', lambda name: project.project_package.ProjectPackage(name)) def on_new_notebook(event): tool_container.value = NewNodeTool( tool_container, self, 'notebook', 'Notebook', lambda name: project.project_page.ProjectPage( name, Notebook())) new_package_item = menu.item('New package', on_new_package) new_worksheet_item = menu.item('New notebook', on_new_notebook) return [new_package_item, new_worksheet_item]
def _present_menu_items(self, fragment, tool_container): super_items = super(ProjectPackage, self)._present_menu_items(fragment, tool_container) def on_rename(event): tool_container.value = RenameNodeTool(tool_container, self) def on_move(event): tool_container.value = MoveNodeTool(tool_container, self) def on_delete(event): self._parent.remove(self) rename_item = menu.item('Rename', on_rename) move_item = menu.item('Move', on_move) delete_item = menu.item('Delete', on_delete) return super_items + [menu.separator(), rename_item, menu.separator(), move_item, menu.separator(), delete_item]
def __present__(self, fragment): self.__incr.on_access() def _on_change_language(lang): self.language = lang language = self.language var_name = text_entry.live_text_entry(self.__var_name) js_item = menu.item('Javascript', lambda event: _on_change_language('js')) css_item = menu.item('CSS', lambda event: _on_change_language('css')) glsl_item = menu.item('GLSL', lambda event: _on_change_language('glsl')) html_item = menu.item('HTML', lambda event: _on_change_language('html')) lang_menu = menu.sub_menu('Change language', [ js_item, css_item, glsl_item, html_item ]) lang_menu_button = menu.menu([lang_menu], drop_down=True) human_lang_name = self.__language_to_human_name[language] header = Html('<div class="notebook_{0}_code_header">'.format(language), '<table class="notebook_src_language_select_table"><tr>', '<td>{0}</td>'.format(human_lang_name), '<td>', lang_menu_button, '</td>', '</tr></table>', '<table><tr>', '<td>Variable name:</td>', '<td>', var_name, '</td>', '</tr></table>', '</div>') code = Html('<div class="notebook_{0}_code_container notebook_code_container">'.format(language), self.__code, '</div>') p = Html('<div class="notebook_code_block">', header, '<div class="notebook_code_block_body">', code, '</div></div>') p = focusable.focusable(p) return p
def __menu_bar_contents__(self, page, fragment): # # File menu # def on_save(): self._save_containing_document_and_display_notification(fragment) def on_unload(): self._unload_from_containing_document_and_display_notification(fragment) save_item = menu.item('Save (Ctrl+S)', lambda event: on_save()) unload_modules_item = menu.item('Unload modules', lambda event: on_unload()) file_menu_contents = menu.sub_menu('File', [save_item, menu.separator(), unload_modules_item]) file_menu = menu.menu([file_menu_contents], drop_down=True) # # Edit menu # def _insert_rich_text(below): self._insert_block(NotebookBlockText(self), below, self.__focused_block(fragment.page)) def _insert_code(below): self._insert_block(NotebookBlockCode(self), below, self.__focused_block(fragment.page)) def _insert_js(below): self._insert_block(NotebookBlockSource(self, 'js', 'js'), below, self.__focused_block(fragment.page)) def _insert_css(below): self._insert_block(NotebookBlockSource(self, 'css', 'css'), below, self.__focused_block(fragment.page)) def _insert_glsl(below): self._insert_block(NotebookBlockSource(self, 'glsl', 'glsl'), below, self.__focused_block(fragment.page)) def _insert_html(below): self._insert_block(NotebookBlockSource(self, 'html', 'html'), below, self.__focused_block(fragment.page)) insert_rich_text_above = menu.item('Insert rich text above', lambda event: _insert_rich_text(False)) insert_code_above = menu.item('Insert executable Python code above', lambda event: _insert_code(False)) insert_js_above = menu.item('Insert JS source above', lambda event: _insert_js(False)) insert_css_above = menu.item('Insert CSS source above', lambda event: _insert_css(False)) insert_html_above = menu.item('Insert HTML source above', lambda event: _insert_html(False)) insert_glsl_above = menu.item('Insert GLSL source above', lambda event: _insert_glsl(False)) insert_rich_text_below = menu.item('Insert rich text below', lambda event: _insert_rich_text(True)) insert_code_below = menu.item('Insert executable Python code below', lambda event: _insert_code(True)) insert_js_below = menu.item('Insert JS source below', lambda event: _insert_js(True)) insert_css_below = menu.item('Insert CSS source below', lambda event: _insert_css(True)) insert_html_below = menu.item('Insert HTML source below', lambda event: _insert_html(True)) insert_glsl_below = menu.item('Insert GLSL source below', lambda event: _insert_glsl(True)) remove_block = menu.item('Remove block', lambda event: self._delete_block(self.__focused_block(fragment.page))) edit_menu_contents = menu.sub_menu('Edit', [ insert_rich_text_above, insert_code_above, insert_js_above, insert_css_above, insert_html_above, insert_glsl_above, menu.separator(), insert_rich_text_below, insert_code_below, insert_js_below, insert_css_below, insert_html_below, insert_glsl_below, menu.separator(), remove_block]) edit_menu = menu.menu([edit_menu_contents], drop_down=True) exec_button = button.button('Execute (Ctrl-Enter)', lambda event: self.execute()) return [file_menu, edit_menu, exec_button, self.__execution_state]