Search in sources :

Example 1 with ExpressionToFileExporter

use of de.neemann.digital.builder.ExpressionToFileExporter in project Digital by hneemann.

the class TableDialog method createCreateMenu.

private JMenu createCreateMenu() {
    JMenu createMenu = new JMenu(Lang.get("menu_table_create"));
    createMenu.add(new ToolTipAction(Lang.get("menu_table_createCircuit")) {

        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            createCircuit(ExpressionModifier.IDENTITY);
        }
    }.setToolTip(Lang.get("menu_table_createCircuit_tt")).setAccelerator("F2").enableAcceleratorIn(table).createJMenuItem());
    createMenu.add(new ToolTipAction(Lang.get("menu_table_createCircuitJK")) {

        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            createCircuit(true, ExpressionModifier.IDENTITY);
        }
    }.setToolTip(Lang.get("menu_table_createCircuitJK_tt")).createJMenuItem());
    createMenu.add(new ToolTipAction(Lang.get("menu_table_createTwo")) {

        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            createCircuit(new TwoInputs());
        }
    }.setToolTip(Lang.get("menu_table_createTwo_tt")).createJMenuItem());
    createMenu.add(new ToolTipAction(Lang.get("menu_table_createNAnd")) {

        @Override
        public void actionPerformed(ActionEvent actionEvent) {
            createCircuit(new NAnd());
        }
    }.setToolTip(Lang.get("menu_table_createNAnd_tt")).createJMenuItem());
    if (Main.isExperimentalMode()) {
        createMenu.add(new ToolTipAction(Lang.get("menu_table_createNAndTwo")) {

            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                createCircuit(new TwoInputs(), new NAnd());
            }
        }.setToolTip(Lang.get("menu_table_createNAndTwo_tt")).createJMenuItem());
        createMenu.add(new ToolTipAction(Lang.get("menu_table_createNOr")) {

            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                createCircuit(new NOr());
            }
        }.setToolTip(Lang.get("menu_table_createNOr_tt")).createJMenuItem());
        createMenu.add(new ToolTipAction(Lang.get("menu_table_createNOrTwo")) {

            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                createCircuit(new TwoInputs(), new NOr());
            }
        }.setToolTip(Lang.get("menu_table_createNOrTwo_tt")).createJMenuItem());
    }
    JMenu hardware = new JMenu(Lang.get("menu_table_create_hardware"));
    register(hardware, new GenerateCUPL(CuplExporter::new, "GAL16v8/CUPL"));
    register(hardware, new GenerateFile("jed", () -> new ExpressionToFileExporter(new Gal16v8JEDECExporter()), "GAL16v8/JEDEC", Lang.get("menu_table_create_jedec_tt")));
    register(hardware, new GenerateCUPL(Gal22v10CuplExporter::new, "GAL22v10/CUPL"));
    register(hardware, new GenerateFile("jed", () -> new ExpressionToFileExporter(new Gal22v10JEDECExporter()), "GAL22v10/JEDEC", Lang.get("menu_table_create_jedec_tt")));
    for (ATFDevice atfDev : ATFDevice.values()) {
        register(hardware, new GenerateCUPL(atfDev::getCuplExporter, "ATF150x/" + atfDev.getMenuName() + "/CUPL"));
        register(hardware, new GenerateFile("tt2", () -> atfDev.createExpressionToFileExporter(TableDialog.this, getProjectName()), "ATF150x/" + atfDev.getMenuName() + "/TT2, JEDEC", Lang.get("menu_table_createTT2_tt")));
    }
    createMenu.add(hardware);
    return createMenu;
}
Also used : Gal16v8JEDECExporter(de.neemann.digital.builder.Gal16v8.Gal16v8JEDECExporter) GenerateFile(de.neemann.digital.gui.components.table.hardware.GenerateFile) ActionEvent(java.awt.event.ActionEvent) NAnd(de.neemann.digital.analyse.expression.modify.NAnd) ATFDevice(de.neemann.digital.builder.ATF150x.ATFDevice) NOr(de.neemann.digital.analyse.expression.modify.NOr) ToolTipAction(de.neemann.gui.ToolTipAction) GenerateCUPL(de.neemann.digital.gui.components.table.hardware.GenerateCUPL) ExpressionToFileExporter(de.neemann.digital.builder.ExpressionToFileExporter) Gal22v10JEDECExporter(de.neemann.digital.builder.Gal22v10.Gal22v10JEDECExporter) TwoInputs(de.neemann.digital.analyse.expression.modify.TwoInputs)

Example 2 with ExpressionToFileExporter

use of de.neemann.digital.builder.ExpressionToFileExporter in project Digital by hneemann.

the class GenerateFile method generate.

@Override
public void generate(JDialog parent, File circuitFile, TruthTable table, ExpressionListenerStore expressions) throws Exception {
    ModelAnalyserInfo mai = table.getModelAnalyzerInfo();
    if (mai == null) {
        JOptionPane.showMessageDialog(parent, new LineBreaker().toHTML().breakLines(Lang.get("msg_circuitIsRequired")), Lang.get("msg_warning"), JOptionPane.WARNING_MESSAGE);
        return;
    } else {
        ArrayList<String> pinsWithoutNumber = mai.getPinsWithoutNumber();
        if (!pinsWithoutNumber.isEmpty()) {
            int res = JOptionPane.showConfirmDialog(parent, new LineBreaker().toHTML().breakLines(Lang.get("msg_thereAreMissingPinNumbers", pinsWithoutNumber)), Lang.get("msg_warning"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE);
            if (res != JOptionPane.OK_OPTION)
                return;
        }
    }
    if (circuitFile == null)
        circuitFile = new File("circuit." + suffix);
    else
        circuitFile = SaveAsHelper.checkSuffix(circuitFile, suffix);
    JFileChooser fileChooser = new MyFileChooser();
    fileChooser.setFileFilter(new FileNameExtensionFilter("JEDEC", suffix));
    fileChooser.setSelectedFile(circuitFile);
    if (fileChooser.showSaveDialog(parent) == JFileChooser.APPROVE_OPTION) {
        ExpressionToFileExporter expressionExporter = factory.create();
        expressionExporter.getPinMapping().addAll(mai.getPins());
        expressionExporter.getPinMapping().setClockPin(mai.getClockPinInt());
        new BuilderExpressionCreator(expressionExporter.getBuilder(), ExpressionModifier.IDENTITY).create(expressions);
        expressionExporter.export(SaveAsHelper.checkSuffix(fileChooser.getSelectedFile(), suffix));
    }
}
Also used : MyFileChooser(de.neemann.gui.MyFileChooser) ModelAnalyserInfo(de.neemann.digital.analyse.ModelAnalyserInfo) ExpressionToFileExporter(de.neemann.digital.builder.ExpressionToFileExporter) LineBreaker(de.neemann.gui.LineBreaker) FileNameExtensionFilter(javax.swing.filechooser.FileNameExtensionFilter) File(java.io.File) BuilderExpressionCreator(de.neemann.digital.gui.components.table.BuilderExpressionCreator)

Aggregations

ExpressionToFileExporter (de.neemann.digital.builder.ExpressionToFileExporter)2 ModelAnalyserInfo (de.neemann.digital.analyse.ModelAnalyserInfo)1 NAnd (de.neemann.digital.analyse.expression.modify.NAnd)1 NOr (de.neemann.digital.analyse.expression.modify.NOr)1 TwoInputs (de.neemann.digital.analyse.expression.modify.TwoInputs)1 ATFDevice (de.neemann.digital.builder.ATF150x.ATFDevice)1 Gal16v8JEDECExporter (de.neemann.digital.builder.Gal16v8.Gal16v8JEDECExporter)1 Gal22v10JEDECExporter (de.neemann.digital.builder.Gal22v10.Gal22v10JEDECExporter)1 BuilderExpressionCreator (de.neemann.digital.gui.components.table.BuilderExpressionCreator)1 GenerateCUPL (de.neemann.digital.gui.components.table.hardware.GenerateCUPL)1 GenerateFile (de.neemann.digital.gui.components.table.hardware.GenerateFile)1 LineBreaker (de.neemann.gui.LineBreaker)1 MyFileChooser (de.neemann.gui.MyFileChooser)1 ToolTipAction (de.neemann.gui.ToolTipAction)1 ActionEvent (java.awt.event.ActionEvent)1 File (java.io.File)1 FileNameExtensionFilter (javax.swing.filechooser.FileNameExtensionFilter)1