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 &copy; 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)
Exemple #2
0
    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]
Exemple #3
0
	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]
Exemple #4
0
	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
Exemple #5
0
	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]