⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 app.py

📁 Source code for an Numeric Cmputer
💻 PY
字号:
#   This program is free software; you can redistribute it and/or modify#   it under the terms of the GNU General Public License as published by#   the Free Software Foundation; either version 2 of the License, or#   (at your option) any later version.##   This program is distributed in the hope that it will be useful,#   but WITHOUT ANY WARRANTY; without even the implied warranty of#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the#   GNU General Public License for more details.##   You should have received a copy of the GNU General Public License#   along with this program; if not, write to the Free Software#   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USAimport os, sys, gtk, gobjectfrom design import Designfrom load import file_load, file_newfrom save import file_savedef appquit(*args):	gtk.main_quit()def open_file(action):	app.openfile()def save_file(action):	if app.design.file_name:		file_save(app.design, app.design.file_name)	else:		app.savefile()def save_file_as(action):	app.savefile()def new_file(action):	file_new(app.design)def refresh(action):	app.design.update()menu_entries = (	("FileMenu", None, "_File"),	("New", gtk.STOCK_NEW, None, "<control>N",		"Create a new file", new_file),	("Open", gtk.STOCK_OPEN, None, "<control>O",		"Open an existing file", open_file),	("Save", gtk.STOCK_SAVE, None, "<control>S",		"Save file", save_file),	("Save as", gtk.STOCK_SAVE_AS, None, "<shift><control>S",		"Save file with new name", save_file_as),	("Quit", gtk.STOCK_QUIT, None, "<control>Q",		"Quit program", appquit),	("ViewMenu", None, "_View"),	("Refresh", gtk.STOCK_REFRESH, None, "<control>R",		"Refresh", refresh),)class Application(gtk.Window):	def __init__(self, parent=None):		global app		app = self		gtk.Window.__init__(self)		try:			self.set_screen(parent.get_screen())		except AttributeError:			self.connect('destroy', lambda *w: gtk.main_quit())		self.design = Design(self)		actions = gtk.ActionGroup("Actions")		actions.add_actions(menu_entries)				ui = gtk.UIManager()		ui.insert_action_group(actions, 0)		self.add_accel_group(ui.get_accel_group())		# better path to 'ui.xml' needed		uifile = os.path.join(os.path.dirname(sys.argv[0]), "ui.xml")		try:			mergeid = ui.add_ui_from_file(uifile)		except gobject.GError, msg:			print "error building menus: %s" % (msg)				box1 = gtk.VBox(False, 0)		self.add(box1)		box1.pack_start(ui.get_widget("/MenuBar"), False, False)		box1.pack_start(ui.get_widget("/ToolBar"), False, False)		box1.pack_start(self.design, True, True)		statusbar = gtk.Statusbar()		box1.pack_start(statusbar, False, False)		self.set_default_size(1024, 768)		self.settitle()		self.set_border_width(0)	def show_app(self):		self.show_all()	def settitle(self):		if self.design.file_name:			self.set_title("Crapahalic - " + self.design.file_name)		else:			self.set_title("Crapahalic")	def openfile(self):		dialog = gtk.FileChooserDialog(title="Open...", action=gtk.FILE_CHOOSER_ACTION_OPEN,			buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))		dialog.set_default_response(gtk.RESPONSE_OK)		hal_filter = gtk.FileFilter()		hal_filter.set_name("craphal files")		hal_filter.add_pattern("*.hal")		dialog.add_filter(hal_filter)		response = dialog.run()		if response == gtk.RESPONSE_OK:			new_file(None)			file_load(app.design, dialog.get_filename())		dialog.destroy()	def savefile(self):		dialog = gtk.FileChooserDialog(title="Save...", action=gtk.FILE_CHOOSER_ACTION_SAVE,			buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_SAVE,gtk.RESPONSE_OK))		dialog.set_default_response(gtk.RESPONSE_OK)		hal_filter = gtk.FileFilter()		hal_filter.set_name("craphal files")		hal_filter.add_pattern("*.hal")		dialog.add_filter(hal_filter)		response = dialog.run()		if response == gtk.RESPONSE_OK:			file_save(app.design, dialog.get_filename())		dialog.destroy()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -