예제 #1
0
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)
예제 #2
0
        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)
예제 #3
0
파일: actions.py 프로젝트: swipswaps/cae
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'))
예제 #4
0
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)