Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

boards menu: splitted boards in submenus #120

Closed
wants to merge 3 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 22 additions & 4 deletions app/src/processing/app/Base.java
Original file line number Diff line number Diff line change
Expand Up @@ -1002,12 +1002,13 @@ public void onBoardOrPortChange() {

public void rebuildBoardsMenu(JMenu menu) {
//System.out.println("rebuilding boards menu");
menu.removeAll();
menu.removeAll();
ButtonGroup group = new ButtonGroup();
for (Target target : targetsTable.values()) {
for (String board : target.getBoards().keySet()) {
AbstractAction action =
new AbstractAction(target.getBoards().get(board).get("name")) {
Map<String, String> boardAttributes = target.getBoards().get(board);
AbstractAction action =
new AbstractAction(boardAttributes.get("name")) {
public void actionPerformed(ActionEvent actionevent) {
//System.out.println("Switching to " + target + ":" + board);
Preferences.set("target", (String) getValue("target"));
Expand All @@ -1024,9 +1025,26 @@ public void actionPerformed(ActionEvent actionevent) {
item.setSelected(true);
}
group.add(item);
menu.add(item);
if (boardAttributes.containsKey("container")) {
JMenuItem container = findOrCreateBoardsSubmenuContainer(menu, boardAttributes.get("container"));
container.add(item);
} else {
menu.add(item);
}
}
}
}

private JMenuItem findOrCreateBoardsSubmenuContainer(JMenu boardMenu, String label) {
for (MenuElement menuElement : boardMenu.getPopupMenu().getSubElements()) {
JMenuItem item = (JMenuItem) menuElement;
if (label.equals(item.getText())) {
return item;
}
}
JMenu item = new JMenu(label);
boardMenu.add(item);
return item;
}


Expand Down
6 changes: 5 additions & 1 deletion app/src/processing/app/Editor.java
Original file line number Diff line number Diff line change
Expand Up @@ -2649,7 +2649,11 @@ public void statusEmpty() {

protected void onBoardOrPortChange() {
Map<String, String> boardPreferences = Base.getBoardPreferences();
lineStatus.setBoardName(boardPreferences.get("name"));
String boardName = boardPreferences.get("name");
if (boardPreferences.containsKey("container")) {
boardName = boardPreferences.get("container") + " w/ " + boardName;
}
lineStatus.setBoardName(boardName);
lineStatus.setSerialPort(Preferences.get("serial.port"));
lineStatus.repaint();
}
Expand Down
48 changes: 32 additions & 16 deletions hardware/arduino/boards.txt
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ diecimila.build.variant=standard

##############################################################

nano328.name=Arduino Nano w/ ATmega328
nano328.name=ATmega328
nano328.container=Arduino Nano

nano328.upload.protocol=arduino
nano328.upload.maximum_size=30720
Expand All @@ -83,7 +84,8 @@ nano328.build.variant=eightanaloginputs

##############################################################

nano.name=Arduino Nano w/ ATmega168
nano.name=ATmega168
nano.container=Arduino Nano

nano.upload.protocol=arduino
nano.upload.maximum_size=14336
Expand All @@ -104,7 +106,8 @@ nano.build.variant=eightanaloginputs

##############################################################

mega2560.name=Arduino Mega 2560 or Mega ADK
mega2560.name=Mega 2560 or Mega ADK
mega2560.container=Arduino Mega

mega2560.upload.protocol=wiring
mega2560.upload.maximum_size=258048
Expand All @@ -125,7 +128,8 @@ mega2560.build.variant=mega

##############################################################

mega.name=Arduino Mega (ATmega1280)
mega.name=ATmega1280
mega.container=Arduino Mega

mega.upload.protocol=arduino
mega.upload.maximum_size=126976
Expand Down Expand Up @@ -167,7 +171,8 @@ leonardo.build.variant=leonardo

##############################################################

mini328.name=Arduino Mini w/ ATmega328
mini328.name=ATmega328
mini328.container=Arduino Mini

mini328.upload.protocol=arduino
mini328.upload.maximum_size=28672
Expand All @@ -188,7 +193,8 @@ mini328.build.variant=eightanaloginputs

##############################################################

mini.name=Arduino Mini w/ ATmega168
mini.name=ATmega168
mini.container=Arduino Mini

mini.upload.protocol=arduino
mini.upload.maximum_size=14336
Expand Down Expand Up @@ -251,7 +257,8 @@ fio.build.variant=eightanaloginputs

##############################################################

bt328.name=Arduino BT w/ ATmega328
bt328.name=ATmega328
bt328.container=Arduino BT

bt328.upload.protocol=arduino
bt328.upload.maximum_size=28672
Expand All @@ -273,7 +280,8 @@ bt328.build.variant=eightanaloginputs

##############################################################

bt.name=Arduino BT w/ ATmega168
bt.name=ATmega168
bt.container=Arduino BT

bt.upload.protocol=arduino
bt.upload.maximum_size=14336
Expand All @@ -295,7 +303,8 @@ bt.build.variant=eightanaloginputs

##############################################################

lilypad328.name=LilyPad Arduino w/ ATmega328
lilypad328.name=ATmega328
lilypad328.container=LilyPad Arduino

lilypad328.upload.protocol=arduino
lilypad328.upload.maximum_size=30720
Expand All @@ -316,7 +325,8 @@ lilypad328.build.variant=standard

##############################################################

lilypad.name=LilyPad Arduino w/ ATmega168
lilypad.name=ATmega168
lilypad.container=LilyPad Arduino

lilypad.upload.protocol=arduino
lilypad.upload.maximum_size=14336
Expand All @@ -337,7 +347,8 @@ lilypad.build.variant=standard

##############################################################

pro5v328.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega328
pro5v328.name=ATmega328 (5V, 16 MHz)
pro5v328.container=Arduino Pro or Pro Mini

pro5v328.upload.protocol=arduino
pro5v328.upload.maximum_size=30720
Expand All @@ -358,7 +369,8 @@ pro5v328.build.variant=standard

##############################################################

pro5v.name=Arduino Pro or Pro Mini (5V, 16 MHz) w/ ATmega168
pro5v.name=ATmega168 (5V, 16 MHz)
pro5v.container=Arduino Pro or Pro Mini

pro5v.upload.protocol=arduino
pro5v.upload.maximum_size=14336
Expand All @@ -379,7 +391,8 @@ pro5v.build.variant=standard

##############################################################

pro328.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega328
pro328.name=ATmega328 (3.3V, 8 MHz)
pro328.container=Arduino Pro or Pro Mini

pro328.upload.protocol=arduino
pro328.upload.maximum_size=30720
Expand All @@ -400,7 +413,8 @@ pro328.build.variant=standard

##############################################################

pro.name=Arduino Pro or Pro Mini (3.3V, 8 MHz) w/ ATmega168
pro.name=ATmega168 (3.3V, 8 MHz)
pro.container=Arduino Pro or Pro Mini

pro.upload.protocol=arduino
pro.upload.maximum_size=14336
Expand All @@ -421,7 +435,8 @@ pro.build.variant=standard

##############################################################

atmega168.name=Arduino NG or older w/ ATmega168
atmega168.name=ATmega168
atmega168.container=Arduino NG or older

atmega168.upload.protocol=arduino
atmega168.upload.maximum_size=14336
Expand All @@ -442,7 +457,8 @@ atmega168.build.variant=standard

##############################################################

atmega8.name=Arduino NG or older w/ ATmega8
atmega8.name=ATmega8
atmega8.container=Arduino NG or older

atmega8.upload.protocol=arduino
atmega8.upload.maximum_size=7168
Expand Down