--- /dev/null
+2
+2
+7.500000000000000000e+01 3.480000000000000000e+02
+7.190000000000000000e+02 3.460000000000000000e+02
+7.224731980875429826e+02 1.210999999999403144e+03
+8.000000000000000000e+01 1.214000000000000000e+03
+48
+33
+7.436563918088408276e-02 -4.293628128222262740e-04 -5.428004679702836732e+00
+1.179327284454995128e-04 3.797433855993687102e-02 -1.322391477349014899e+01
+-1.812285580558945387e-06 -2.717006378139452585e-06 1.000000000000000000e+00
+2
+7.200000000000000000e+01 1.510000000000000000e+02
+9.750000000000000000e+02 1.450000000000000000e+02
+9.730000000000000000e+02 1.359000000000000000e+03
+7.000000000000000000e+01 1.361000000000000000e+03
+68
+46
+7.557437035050205976e-02 1.249163146327952759e-04 -5.460217028763203473e+00
+2.526732021656680205e-04 3.802731692607215497e-02 -5.760317326392990545e+00
+3.661957232370968793e-06 1.208561119608967402e-08 1.000000000000000000e+00
self.button1 = self.builder.get_object('button1')
self.button2 = self.builder.get_object('button2')
self.viewport = self.builder.get_object('viewport')
+ self.menu_new = self.builder.get_object('menu_new')
+ self.menu_open = self.builder.get_object('menu_open')
self.menu_save = self.builder.get_object('menu_save')
self.menu_save_as = self.builder.get_object('menu_save_as')
self.application_window.connect('destroy', Gtk.main_quit)
self.application_window.connect('key_press_event', self.on_key_press)
+ self.menu_new.connect('activate', self.on_new)
+ self.menu_open.connect('activate', self.on_open)
self.menu_save.connect('activate', self.on_save)
self.menu_save_as.connect('activate', self.on_save_as)
return False
return True
+ def on_new(self, menu_item):
+ self.file_txt = None
+ self.pages = [Page(), Page()]
+ self.set_page(0, 'a-008.png')
+ self.invalidate()
+ return True
+
+ def on_open(self, menu_item):
+ if self.file_chooser_open():
+ self.read_file_txt()
+ self.set_page(0, 'a-008.png')
+ self.invalidate()
+ return True
+
def on_save(self, menu_item):
- if self.file_txt is not None or self.file_chooser():
+ if self.file_txt is not None or self.file_chooser_save():
self.write_file_txt()
return True
def on_save_as(self, menu_item):
- if self.file_chooser():
+ if self.file_chooser_save():
self.write_file_txt()
return True
- def file_chooser(self):
+ def file_chooser_open(self):
+ dialog = Gtk.FileChooserDialog(
+ title = "Open",
+ parent = self.application_window,
+ action = Gtk.FileChooserAction.OPEN
+ )
+ dialog.add_buttons(
+ Gtk.STOCK_CANCEL,
+ Gtk.ResponseType.CANCEL,
+ Gtk.STOCK_OPEN,
+ Gtk.ResponseType.OK,
+ )
+ self.add_filters(dialog)
+
+ response = dialog.run()
+ if response == Gtk.ResponseType.CANCEL:
+ dialog.destroy()
+ return False
+
+ self.file_txt = dialog.get_filename()
+ dialog.destroy()
+ return True
+
+ def file_chooser_save(self):
dialog = Gtk.FileChooserDialog(
title = "Save as",
parent = self.application_window,
filter_any.add_pattern("*")
dialog.add_filter(filter_any)
+ def read_file_txt(self):
+ with open(self.file_txt) as fin:
+ self.pages = []
+ n_pages = int(fin.readline())
+ for i in range(n_pages):
+ state = int(fin.readline())
+ nodes = numpy.loadtxt(fin, numpy.double, max_rows = 4)
+ chars = numpy.loadtxt(fin, numpy.int32, max_rows = 2)
+ H = numpy.loadtxt(fin, numpy.double, max_rows = 3)
+ self.pages.append(Page(state, nodes, chars, H))
+
def write_file_txt(self):
with open(self.file_txt, 'w') as fout:
fout.write(f'{len(self.pages):d}\n')
for page in self.pages:
fout.write(f'{page.state:d}\n')
numpy.savetxt(fout, page.nodes)
- numpy.savetxt(fout, page.chars)
+ numpy.savetxt(fout, page.chars, '%d')
numpy.savetxt(fout, page.H)
+
app = App()
app.application_window.set_position(Gtk.WindowPosition.CENTER)
app.application_window.present()