def main(): parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(dest='command') # import import_parser = subparsers.add_parser('import') sources = ["checking", "credit", "gnucash"] import_parser.add_argument("--source", choices=sources, dest="source", required=True) import_parser.add_argument("--file", dest="fname", required=True) import_parser.add_argument("--startdate", dest="start_date", required=True) import_parser.add_argument("--enddate", dest="end_date", required=True) # db setup setup_parser = subparsers.add_parser('create-tables') setup_parser.add_argument("--drop", action="store_true", dest="drop") # reconcile reconcile_parser = subparsers.add_parser('reconcile') reconcile_parser.add_argument("--exact-only", action="store_true", dest="exact_only") reconcile_parser.add_argument("--reset-transactions", action="store_true", dest="reset_transactions") # remove remove_parser = subparsers.add_parser('remove') remove_parser.add_argument("--batch-id", dest="batchid", required=True) args = parser.parse_args() if args.command == "create-tables": db_setup.create_tables(args.drop) elif args.command == "import": importer.import_file(args.fname, args.source, args.start_date, args.end_date) elif args.command == "reconcile": reconciler.reconcile(args.exact_only, args.reset_transactions) elif args.command == "remove": remover.remove_batch(args.batchid)
w = gui.window.Linux_window(p, s) w.show() w.wid1 = w.get_wid('CalculiX Advanced Environment') if s.align_windows: w.align() # Main block m = model.Model() # generate FEM model t = tree.Tree(p, s, w, m) # create treeView items based on KOM j = model.job.Job(p, s, w, m) # create job object actions.actions(p, s, w, m, t, j) # window actions # Import default model if len(args.inp): start_model = os.path.join(p.app_home_dir, args.inp) importer.import_file(p, s, w, m, t, j, start_model) # Or start empty else: logging.warning('No default start model specified.') m.KOM = model.kom.KOM(p, s) t.generateTreeView(m) logging.info('Started in {:.1f} seconds.\n'.format(time.perf_counter() - start_time)) # Execute application app.exec() # Kill CGX after CAE exit gui.cgx.kill(w)
def actions(p, s, w, m, t, j): w.keyPressEvent = t.keyPressEvent # File actions w.action_file_import.triggered.connect( lambda: importer.import_file(p, s, w, m, t, j)) w.action_file_settings.triggered.connect(s.open) w.action_file_exit.triggered.connect(QtWidgets.qApp.quit) # Job actions w.action_job_write_input.triggered.connect( lambda: j.write_input(m.KOM.get_inp_code_as_lines())) w.action_job_write_input.triggered.connect( lambda: w.setWindowTitle('CalculiX Advanced Environment - ' + j.name)) w.action_job_edit_inp.triggered.connect(lambda: j.edit_inp()) w.action_job_subroutine.triggered.connect(lambda: j.open_subroutine()) w.action_job_rebuild_ccx.triggered.connect(lambda: j.rebuild_ccx()) w.action_job_submit.triggered.connect(lambda: j.submit()) w.action_job_view_log.triggered.connect(lambda: j.view_log()) w.action_job_export_vtu.triggered.connect(j.export_vtu) w.action_job_paraview.triggered.connect(lambda: j.open_paraview()) # CGX actions w.action_cgx_paint_elsets.triggered.connect( lambda: gui.cgx.paint_elsets(w, m)) w.action_cgx_paint_surfaces.triggered.connect( lambda: gui.cgx.paint_surfaces(w, m)) w.action_cgx_inp.triggered.connect( lambda: gui.cgx.open_inp(w, j.inp, len(m.Mesh.nodes))) w.action_cgx_frd.triggered.connect(lambda: gui.cgx.open_frd(w, j.frd)) # Help actions w.action_help_readme.triggered.connect( lambda: w.help('file://{}/README.pdf'.format(p.app_home_dir))) w.action_help_examples.triggered.connect( lambda: w.help('https://github.com/calculix/examples')) w.action_help_issues.triggered.connect( lambda: w.help('https://github.com/calculix/cae/issues')) # treeView actions w.treeView.doubleClicked.connect(t.doubleClicked) w.treeView.clicked.connect(t.clicked) w.treeView.customContextMenuRequested.connect(t.rightClicked) w.treeView.expanded.connect(t.treeViewExpanded) w.treeView.collapsed.connect(t.treeViewCollapsed) # ToolBar actions w.action_view_minus_x.triggered.connect(lambda: w.post('rot -x')) w.action_view_minus_y.triggered.connect(lambda: w.post('rot -y')) w.action_view_minus_z.triggered.connect(lambda: w.post('rot -z')) w.action_view_plus_x.triggered.connect(lambda: w.post('rot x')) w.action_view_plus_y.triggered.connect(lambda: w.post('rot y')) w.action_view_plus_z.triggered.connect(lambda: w.post('rot z')) w.action_view_frame.triggered.connect(lambda: w.post('frame')) # Workaround for iso view # Three rotation posts to CGX window doesn't work in Windows # So one may use .fbd commands def action_view_iso(): file_name = os.path.join(p.config, 'iso.fbd') if not os.path.isfile(file_name): logging.error('No config file iso.fbd') return w.post('read ' + file_name) w.action_view_iso.triggered.connect(action_view_iso) w.action_view_line.triggered.connect(lambda: w.post('view elem off')) w.action_view_line.triggered.connect(lambda: w.post('view line')) w.action_view_fill.triggered.connect(lambda: w.post('view elem off')) w.action_view_fill.triggered.connect(lambda: w.post('view fill')) w.action_view_elem.triggered.connect(lambda: w.post('view fill')) w.action_view_elem.triggered.connect(lambda: w.post('view elem'))
def main(): parser = argparse.ArgumentParser() subparsers = parser.add_subparsers(dest='command') # import import_parser = subparsers.add_parser('import') sources = ["Gnucash", "Institution"] import_parser.add_argument("-s", "--source", choices=sources, dest="source", required=True) import_parser.add_argument("-a", "--account", dest="account", required=False, help="target account description or ID") import_parser.add_argument("-f", "--file", dest="fname", required=True) import_parser.add_argument( "-i", "--infer", action='store_true', dest="infer", help= "infer dates from filename, format: file-name_{{startdate}}_{{enddate}}.csv dates YYYYMMDD" ) import_parser.add_argument("--startdate", dest="start_date", required=False, help="start date formatted as YYYY-MM-DD") import_parser.add_argument("--enddate", dest="end_date", required=False, help="end date formatted as YYYY-MM-DD") # db setup setup_parser = subparsers.add_parser('create-tables') setup_parser.add_argument("--drop", action="store_true", dest="drop", help="drop existing tables") setup_parser.add_argument("--force", action="store_true", dest="force", help="force dropping tables without prompt") # reconcile reconcile_parser = subparsers.add_parser('reconcile') reconcile_parser.add_argument("--exact-only", action="store_true", dest="exact_only") reconcile_parser.add_argument("--reset-transactions", action="store_true", dest="reset_transactions") # remove remove_parser = subparsers.add_parser('remove') remove_parser.add_argument("--batch-id", dest="batchid", required=True) args = parser.parse_args() if args.command == "create-tables": db_setup.create_tables(args.drop, args.force) elif args.command == "import": importer.import_file(args.fname, args.source, args.account, args.infer, args.start_date, args.end_date) elif args.command == "reconcile": reconciler.reconcile(args.exact_only, args.reset_transactions) elif args.command == "remove": remover.remove_batch(args.batchid)