[gnoduino] support new programmers logic (1.0 style)



commit 20518556a250b433ec12f08298b4149df659f692
Author: Lucian Langa <lucilanga gnome org>
Date:   Sat Mar 24 23:50:57 2012 +0100

    support new programmers logic (1.0 style)

 src/board.py      |   56 ++-----------------------------
 src/config.py     |    1 +
 src/misc.py       |   52 +++++++++++++++++++++++++++++
 src/programmer.py |   71 ++++++++++++++++++++++++++++++---------
 src/ui.py         |   16 +++++++--
 src/uploader.py   |   37 +++++++++++++++-----
 ui/main.ui        |   95 ++++++++++++++++++++++++++++++++++------------------
 7 files changed, 212 insertions(+), 116 deletions(-)
---
diff --git a/src/board.py b/src/board.py
index c5133ac..d7f1ad4 100644
--- a/src/board.py
+++ b/src/board.py
@@ -39,7 +39,7 @@ class Board(object):
 		try:
 			self.boards.extend(self.readArduinoBoards())
 		except:
-			self.boards.extend(self.readGnoduinoBoards())
+			self.boards.extend(misc.readGnoduinoConfFile("BOARDS"))
 		#renumber ids in case we grown with customs
 		for i in range(len(self.boards)): self.boards[i]['id'] = i+1
 		self.p = prefs.preferences()
@@ -50,58 +50,8 @@ class Board(object):
 			except:
 				config.cur_board = self.getBoardIdByName("uno") - 1
 
-	def readGnoduinoBoards(self):
-		boards = []
-		conf = ConfigParser.RawConfigParser()
-		path = misc.getArduinoFile("BOARDS")
-		if path is None: raise SystemExit(_("Cannot load BOARDS file. Exiting."))
-		conf.read(path)
-		if not len(conf.sections()):
-			raise SystemExit(_("Error reading %s file. File is corrupt. Installation problem.\n") % path)
-		c = 1
-		for i in conf.sections():
-			v = dict(conf.items(i))
-			v['id'] = c
-			v['desc'] = i
-			boards.append(v)
-			c = c + 1
-		return boards
-
 	def readArduinoBoards(self):
-		return self.readArduinoBoardsFile(misc.getArduinoFile("hardware/arduino/boards.txt"))
-
-	def readArduinoBoardsFile(self, boardsFile):
-		boards = []
-		try:
-			f = open(boardsFile)
-			q = []
-			z = []
-			for c in f.readlines():
-				if c!='\n':
-					l = ""
-					line =  c.strip("#").split('\n')[0]
-					if line != "":
-						l = line.split("=")
-						z.append(l)
-						q.append(l[0].split(".")[0])
-
-			k = 1
-			for i in sorted(set(q), reverse=True):
-				w = dict()
-				for c in z:
-					if c[0].split(".")[0] == i:
-						var = c[0].split(".")[-1]
-						if var == "name":
-							w['name'] = i
-							w['desc'] = c[1]
-						else:
-							w[var] = c[1]
-				w['hwpath'] = boardsFile
-				w['id'] = k
-				k += 1
-				boards.append(w)
-			return boards
-		except: return None
+		return misc.readArduinoConfFile(misc.getArduinoFile("hardware/arduino/boards.txt"))
 
 	def readCustomBoards(self):
 		p = prefs.preferences()
@@ -109,7 +59,7 @@ class Board(object):
 		try:
 			for i in os.listdir(d):
 				if os.path.exists(os.path.join(d, i, "boards.txt")):
-					return self.readArduinoBoardsFile(os.path.join(d, i, "boards.txt"))
+					return misc.readArduinoConfFile(os.path.join(d, i, "boards.txt"))
 		except:	return None
 
 	def getBoards(self):
diff --git a/src/config.py b/src/config.py
index c6858b2..6e577cc 100644
--- a/src/config.py
+++ b/src/config.py
@@ -2,6 +2,7 @@
 #define current selected board
 cur_board = -1
 cur_serial_port = -1
+cur_programmer = -1
 cur_iter = -1
 cur_editor_font = -1
 cur_console_font = -1
diff --git a/src/misc.py b/src/misc.py
index 6b6d354..7d62c8f 100644
--- a/src/misc.py
+++ b/src/misc.py
@@ -105,6 +105,58 @@ def getArduinoUiPath():
 def getPixmapPath(pixmap):
 	return get_path(os.path.join("pixmaps", pixmap))
 
+"""generic function to read Arduino preferences-like file"""
+
+def readArduinoConfFile(confFile):
+	conf = []
+	try:
+		f = open(confFile)
+		q = []
+		z = []
+		for c in f.readlines():
+			if c!='\n':
+				l = ""
+				line =  c.split('\n')[0]
+				if line != "" and line[0] != "#":
+					l = line.split("=")
+					z.append(l)
+					q.append(l[0].split(".")[0])
+
+		k = 1
+		for i in sorted(set(q), reverse=True):
+			w = dict()
+			for c in z:
+				if c[0].split(".")[0] == i:
+					var = c[0].split(".")[-1]
+					if var == "name":
+						w['name'] = i
+						w['desc'] = c[1]
+					else:
+						w[var] = c[1]
+			w['hwpath'] = confFile
+			w['id'] = k
+			k += 1
+			conf.append(w)
+		return conf
+	except: return None
+
+def readGnoduinoConfFile(self, confFile):
+	conf = []
+	cnf = ConfigParser.RawConfigParser()
+	path = misc.getArduinoFile(confFile)
+	if path is None: raise SystemExit(_("Cannot load %s file. Exiting.") % confFile)
+	cnf.read(path)
+	if not len(cnf.sections()):
+		raise SystemExit(_("Error reading %s file. File is corrupt. Installation problem.\n") % path)
+	c = 1
+	for i in cnf.sections():
+		v = dict(cnf.items(i))
+		v['id'] = c
+		v['desc'] = i
+		conf.append(v)
+		c = c + 1
+	return conf
+
 def makeWorkdir():
 	return tempfile.mkdtemp("", os.path.join(tempfile.gettempdir(), "build"+str(time.time())))
 
diff --git a/src/programmer.py b/src/programmer.py
index aa835f5..ec8e51a 100644
--- a/src/programmer.py
+++ b/src/programmer.py
@@ -34,31 +34,68 @@ class Programmer(object):
 	def __init__(self):
 		self.programmers = []
 		self.defaults = []
-		conf = ConfigParser.RawConfigParser()
-		path = misc.getArduinoFile("PROGRAMMERS")
-		if path is None: raise SystemExit(_("Cannot find PROGRAMMERS"))
-		conf.read(path)
-		if not len(conf.sections()):
-			raise SystemExit(_("Error reading %s file. File is corrupt. Installation problem.") % path)
-		c = 1
-		for i in conf.sections():
-			v = mydict(conf.items(i))
-			v['id'] = c
-			v['desc'] = i
-			self.programmers.append(v)
-			c = c + 1
+
+		try:
+			self.programmers.extend(self.readCustomProgrammers())
+		except: pass
+		try:
+			self.programmers.extend(self.readArduinoProgrammers())
+		except:	self.programmers.extend(misc.readGnoduinoConfFile("PROGRAMMERS"))
+
+		#renumber ids in case we grown with customs
+		for i in range(len(self.programmers)): self.programmers[i]['id'] = i+1
+
+		self.p = prefs.preferences()
+		if config.cur_programmer == -1:
+			try:
+				config.cur_programmer = self.getProgrammerIdByName(self.p.getSafeValue("programmer", "arduino:avrispmkii")) - 1
+			except:
+				config.cur_programmer = self.getProgrammerIdByName("arduino:avrispmkii") - 1
+
+	def readArduinoProgrammers(self):
+		return misc.readArduinoConfFile(misc.getArduinoFile("hardware/arduino/programmers.txt"))
+
+	def readCustomProgrammers(self):
+		p = prefs.preferences()
+		d = os.path.join(p.getValue("sketchbook.path"), "hardware")
+		try:
+			for i in os.listdir(d):
+				if os.path.exists(os.path.join(d, i, "programmers.txt")):
+					return misc.readArduinoConfFile(os.path.join(d, i, "programmers.txt"))
+		except: return None
 
 	def getProgrammers(self):
 		return self.programmers
 
+	def getProgrammer(self):
+		return config.cur_programmer
+
 	def getCommunication(self, id):
-		return self.programmers[id-1]['communication']
+		return self.programmers[id]['communication']
 
 	def getProtocol(self, id):
-		return self.programmers[id-1]['protocol']
+		return self.programmers[id]['protocol']
 
 	def getSpeed(self, id):
-		return self.programmers[id-1]['speed']
+		return self.programmers[id]['speed']
 
 	def getForce(self, id):
-		return  self.programmers[id-1]['force']
+		return self.programmers[id]['force']
+
+	def setProgrammer(self, id):
+		config.cur_programmer = (id - 1)
+		self.p.setValue("programmer",
+			self.getProgrammerPlatform(config.cur_programmer)+
+			":"+
+			self.programmers[config.cur_programmer]['name'])
+		self.p.saveValues()
+
+	def getProgrammerPlatform(self, id):
+		return os.path.basename(
+				os.path.dirname(self.programmers[id]['hwpath']))
+
+	def getProgrammerIdByName(self, name):
+		if name == None: return 1
+		for i in self.programmers:
+			if self.getProgrammerPlatform(i['id']-1)+":"+i['name'] == name:
+				return i['id']
diff --git a/src/ui.py b/src/ui.py
index 93666ce..9e47596 100644
--- a/src/ui.py
+++ b/src/ui.py
@@ -588,6 +588,9 @@ def createBaudCombo(w, port):
 def selectBoard(w, id):
 	b.setBoard(id)
 
+def selectProgrammer(w, id):
+	pgm.setProgrammer(id)
+
 def setSerial(w, id):
 	createBaudCombo(w, id)
 	try:
@@ -694,6 +697,7 @@ def run():
 		global scon
 		global p
 		global b
+		global pgm
 		global recentmanager
 		locale_path = _search_locales()
 		gettext.bindtextdomain(APP_NAME, locale_path)
@@ -749,6 +753,7 @@ def run():
 		"""build menus"""
 		sub = gtk.Menu()
 		b = board.Board()
+		pgm = programmer.Programmer()
 		maingroup = gtk.RadioMenuItem(None, None)
 		for i in b.getBoards():
 			menuItem = gtk.RadioMenuItem(maingroup, i['desc'])
@@ -801,12 +806,15 @@ def run():
 		populateExamples()
 
 		sub = gtk.Menu()
-		pgm = programmer.Programmer()
+		maingroup = gtk.RadioMenuItem(None, None)
 		for i in pgm.getProgrammers():
-			menuItem = gtk.MenuItem(i['desc'])
-			menuItem.connect('activate', burnBootloader, i['id'])
+			menuItem = gtk.RadioMenuItem(maingroup, i['desc'])
+			if i['id'] == pgm.getProgrammer() + 1:
+				menuItem.set_active(True)
+			menuItem.connect('activate', selectProgrammer, i['id'])
 			sub.append(menuItem)
-		gui.get_object("burn").set_submenu(sub)
+		gui.get_object("programmer").set_submenu(sub)
+		gui.get_object("burn").connect('activate', burnBootloader, sub)
 
 		nb = gtk.Notebook()
 		nb.connect("switch-page", setupPage)
diff --git a/src/uploader.py b/src/uploader.py
index 20cd7e1..1471c2f 100644
--- a/src/uploader.py
+++ b/src/uploader.py
@@ -127,22 +127,41 @@ def burnBootloader(serial, output, notify, id):
 
 def upload(obj, serial, output, notify):
 	p = prefs.preferences()
+	pgm = programmer.Programmer()
 	context = notify.get_context_id("main")
 	notify.pop(context)
 	notify.push(context, _("Flashing..."))
 	b = board.Board()
-	port = serial.getConfigSerialPort(notify, output)
-	if port == -1:
-		notify.pop(context)
-		notify.push(context, _("Flashing error."))
-		return
-	serial.resetBoard()
 	compline=[i for i in avr]
-	# avrdude wants "stk500v1" to distinguish it from stk500v2
 	protocol = b.getPGM(b.getBoard())
-	if protocol == "stk500" or protocol == "": protocol = "stk500v1"
+	# avrdude wants "stk500v1" to distinguish it from stk500v2
+	if protocol == "stk500": protocol = "stk500v1"
+	if protocol == "":
+		protocol =  pgm.getProtocol(pgm.getProgrammer())
+		try:
+			comm = pgm.getCommunication(pgm.getProgrammer())
+			if comm == "serial":
+				port = serial.getConfigSerialPort(notify, output)
+				if port == -1:
+					notify.pop(context)
+					notify.push(context, _("Flashing error."))
+					return
+				serial.resetBoard()
+				compline.append("-P" + port)
+			else: compline.append("-P" + comm)
+			try:
+				compline.append("-b" + pgm.getSpeed(pgm.getProgrammer()))
+			except: pass
+		except: pass
+	else:
+		port = serial.getConfigSerialPort(notify, output)
+		if port == -1:
+			notify.pop(context)
+			notify.push(context, _("Flashing error."))
+			return
+		compline.append("-P" + port)
+		serial.resetBoard()
 	compline.append("-c" + protocol)
-	compline.append("-P" + port)
 	try:
 		compline.append("-b" + b.getPGMSpeed(b.getBoard()))
 	except: pass
diff --git a/ui/main.ui b/ui/main.ui
index 07efbeb..54ae519 100644
--- a/ui/main.ui
+++ b/ui/main.ui
@@ -70,6 +70,7 @@
             <child>
               <object class="GtkButton" id="button2">
                 <property name="label">gtk-close</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
@@ -85,6 +86,7 @@
             <child>
               <object class="GtkButton" id="button4">
                 <property name="label">gtk-find</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="receives_default">True</property>
@@ -166,6 +168,7 @@
                         <child>
                           <object class="GtkCheckButton" id="checkbutton2">
                             <property name="label" translatable="yes">Match entire word only</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="receives_default">False</property>
@@ -181,6 +184,7 @@
                         <child>
                           <object class="GtkCheckButton" id="checkbutton4">
                             <property name="label" translatable="yes">Wrap around</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="receives_default">False</property>
@@ -197,6 +201,7 @@
                         <child>
                           <object class="GtkCheckButton" id="checkbutton1">
                             <property name="label" translatable="yes">Match case</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="receives_default">False</property>
@@ -212,6 +217,7 @@
                         <child>
                           <object class="GtkCheckButton" id="checkbutton3">
                             <property name="label" translatable="yes">Search backwards</property>
+                            <property name="use_action_appearance">False</property>
                             <property name="visible">True</property>
                             <property name="can_focus">False</property>
                             <property name="receives_default">False</property>
@@ -275,6 +281,7 @@
             <child>
               <object class="GtkButton" id="pref_close">
                 <property name="label">gtk-cancel</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
@@ -290,6 +297,7 @@
             <child>
               <object class="GtkButton" id="button3">
                 <property name="label">gtk-ok</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>
@@ -330,6 +338,7 @@
                 </child>
                 <child>
                   <object class="GtkFontButton" id="fontbutton1">
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
@@ -343,6 +352,7 @@
                 </child>
                 <child>
                   <object class="GtkFontButton" id="fontbutton2">
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">True</property>
@@ -377,6 +387,7 @@
             <child>
               <object class="GtkCheckButton" id="build.verbose">
                 <property name="label" translatable="yes">Verbose build</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">False</property>
@@ -396,6 +407,7 @@
                 <child>
                   <object class="GtkCheckButton" id="show.numbers">
                     <property name="label" translatable="yes">Show line numbers</property>
+                    <property name="use_action_appearance">False</property>
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="receives_default">False</property>
@@ -468,9 +480,9 @@
             <property name="can_focus">False</property>
             <child>
               <object class="GtkMenuItem" id="filemenuitem">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">_File</property>
                 <property name="use_underline">True</property>
                 <child type="submenu">
@@ -480,9 +492,9 @@
                     <child>
                       <object class="GtkImageMenuItem" id="menu-new">
                         <property name="label">gtk-new</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <property name="accel_group">mainaccelgrp</property>
@@ -491,9 +503,9 @@
                     <child>
                       <object class="GtkImageMenuItem" id="menu-open">
                         <property name="label">gtk-open</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <property name="accel_group">mainaccelgrp</property>
@@ -502,9 +514,9 @@
                     <child>
                       <object class="GtkImageMenuItem" id="menu-save">
                         <property name="label">gtk-save</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <property name="accel_group">mainaccelgrp</property>
@@ -513,9 +525,9 @@
                     <child>
                       <object class="GtkImageMenuItem" id="menu-save-as">
                         <property name="label">gtk-save-as</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <property name="accel_group">mainaccelgrp</property>
@@ -524,9 +536,9 @@
                     </child>
                     <child>
                       <object class="GtkMenuItem" id="menu-upload">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Upload to I/O Board</property>
                         <property name="use_underline">True</property>
                         <accelerator key="u" signal="activate" modifiers="GDK_CONTROL_MASK"/>
@@ -534,9 +546,9 @@
                     </child>
                     <child>
                       <object class="GtkMenuItem" id="menu-preferences">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Preferences</property>
                         <property name="use_underline">True</property>
                       </object>
@@ -550,9 +562,9 @@
                     <child>
                       <object class="GtkImageMenuItem" id="menu-quit">
                         <property name="label">gtk-quit</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <property name="accel_group">mainaccelgrp</property>
@@ -565,9 +577,9 @@
             </child>
             <child>
               <object class="GtkMenuItem" id="menuitem2">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">_Edit</property>
                 <property name="use_underline">True</property>
                 <child type="submenu">
@@ -577,9 +589,9 @@
                     <child>
                       <object class="GtkImageMenuItem" id="menu-undo">
                         <property name="label">gtk-undo</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <property name="accel_group">mainaccelgrp</property>
@@ -589,9 +601,9 @@
                     <child>
                       <object class="GtkImageMenuItem" id="menu-redo">
                         <property name="label">gtk-redo</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <property name="accel_group">mainaccelgrp</property>
@@ -600,17 +612,17 @@
                     </child>
                     <child>
                       <object class="GtkSeparatorMenuItem" id="separatormenuitem3">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                       </object>
                     </child>
                     <child>
                       <object class="GtkImageMenuItem" id="menu-cut">
                         <property name="label">gtk-cut</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <property name="accel_group">mainaccelgrp</property>
@@ -619,9 +631,9 @@
                     <child>
                       <object class="GtkImageMenuItem" id="menu-copy">
                         <property name="label">gtk-copy</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <property name="accel_group">mainaccelgrp</property>
@@ -630,9 +642,9 @@
                     <child>
                       <object class="GtkImageMenuItem" id="menu-paste">
                         <property name="label">gtk-paste</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <property name="accel_group">mainaccelgrp</property>
@@ -647,9 +659,9 @@
                     <child>
                       <object class="GtkImageMenuItem" id="menu-find">
                         <property name="label">gtk-find</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <property name="accel_group">mainaccelgrp</property>
@@ -657,18 +669,18 @@
                     </child>
                     <child>
                       <object class="GtkMenuItem" id="menu-find-next">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Find Next</property>
                       </object>
                     </child>
                     <child>
                       <object class="GtkImageMenuItem" id="menu-replace">
                         <property name="label">gtk-find-and-replace</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                         <property name="accel_group">mainaccelgrp</property>
@@ -680,9 +692,9 @@
             </child>
             <child>
               <object class="GtkMenuItem" id="menuitem3">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">Sketch</property>
                 <property name="use_underline">True</property>
                 <child type="submenu">
@@ -691,9 +703,9 @@
                     <property name="can_focus">False</property>
                     <child>
                       <object class="GtkMenuItem" id="menu-compile">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Verify/Compile</property>
                         <property name="use_underline">True</property>
                         <accelerator key="r" signal="activate" modifiers="GDK_CONTROL_MASK"/>
@@ -701,27 +713,27 @@
                     </child>
                     <child>
                       <object class="GtkMenuItem" id="menuitem7">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Stop</property>
                         <property name="use_underline">True</property>
                       </object>
                     </child>
                     <child>
                       <object class="GtkMenuItem" id="menu-import">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Import Library</property>
                         <property name="use_underline">True</property>
                       </object>
                     </child>
                     <child>
                       <object class="GtkMenuItem" id="menuitem9">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Add File...</property>
                         <property name="use_underline">True</property>
                       </object>
@@ -732,9 +744,9 @@
             </child>
             <child>
               <object class="GtkMenuItem" id="tools">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">Tools</property>
                 <property name="use_underline">True</property>
                 <child type="submenu">
@@ -743,18 +755,18 @@
                     <property name="can_focus">False</property>
                     <child>
                       <object class="GtkMenuItem" id="menuitem10">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Auto Format</property>
                         <property name="use_underline">True</property>
                       </object>
                     </child>
                     <child>
                       <object class="GtkMenuItem" id="ser_monitor">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Serial Monitor</property>
                         <property name="use_underline">True</property>
                         <accelerator key="m" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
@@ -762,9 +774,9 @@
                     </child>
                     <child>
                       <object class="GtkMenuItem" id="menu-reset-board">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Reset Board</property>
                         <property name="use_underline">True</property>
                         <accelerator key="r" signal="activate" modifiers="GDK_SHIFT_MASK | GDK_CONTROL_MASK"/>
@@ -772,27 +784,36 @@
                     </child>
                     <child>
                       <object class="GtkMenuItem" id="board">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Board</property>
                         <property name="use_underline">True</property>
                       </object>
                     </child>
                     <child>
                       <object class="GtkMenuItem" id="serial_port">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Serial Port</property>
                         <property name="use_underline">True</property>
                       </object>
                     </child>
                     <child>
-                      <object class="GtkMenuItem" id="burn">
+                      <object class="GtkMenuItem" id="programmer">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
+                        <property name="label" translatable="yes">Programmer</property>
+                        <property name="use_underline">True</property>
+                      </object>
+                    </child>
+                    <child>
+                      <object class="GtkMenuItem" id="burn">
                         <property name="use_action_appearance">False</property>
+                        <property name="visible">True</property>
+                        <property name="can_focus">False</property>
                         <property name="label" translatable="yes">Burn Bootloader</property>
                         <property name="use_underline">True</property>
                       </object>
@@ -803,9 +824,9 @@
             </child>
             <child>
               <object class="GtkMenuItem" id="menuitem4">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
-                <property name="use_action_appearance">False</property>
                 <property name="label" translatable="yes">_Help</property>
                 <property name="use_underline">True</property>
                 <child type="submenu">
@@ -814,9 +835,9 @@
                     <property name="can_focus">False</property>
                     <child>
                       <object class="GtkMenuItem" id="menu-reference">
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="label" translatable="yes">Reference</property>
                         <property name="use_underline">True</property>
                       </object>
@@ -824,9 +845,9 @@
                     <child>
                       <object class="GtkImageMenuItem" id="menu-about">
                         <property name="label">gtk-about</property>
+                        <property name="use_action_appearance">False</property>
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
-                        <property name="use_action_appearance">False</property>
                         <property name="use_underline">True</property>
                         <property name="use_stock">True</property>
                       </object>
@@ -849,6 +870,7 @@
             <property name="toolbar_style">icons</property>
             <child>
               <object class="GtkToolButton" id="compile">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="tooltip_markup">Compile</property>
@@ -864,6 +886,7 @@
             </child>
             <child>
               <object class="GtkToolButton" id="stop">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="tooltip_text" translatable="yes">Stop</property>
@@ -888,6 +911,7 @@
             </child>
             <child>
               <object class="GtkToolButton" id="new">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="tooltip_text" translatable="yes">New</property>
@@ -902,6 +926,7 @@
             </child>
             <child>
               <object class="GtkToolButton" id="open">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="tooltip_text" translatable="yes">Open</property>
@@ -916,6 +941,7 @@
             </child>
             <child>
               <object class="GtkToolButton" id="save">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="tooltip_text" translatable="yes">Save</property>
@@ -930,6 +956,7 @@
             </child>
             <child>
               <object class="GtkToolButton" id="upload">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="tooltip_text" translatable="yes">Upload</property>
@@ -954,6 +981,7 @@
             </child>
             <child>
               <object class="GtkToolButton" id="serial">
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
                 <property name="tooltip_text" translatable="yes">Serial Monitor</property>
@@ -1075,6 +1103,7 @@
             <child>
               <object class="GtkButton" id="button1">
                 <property name="label" translatable="yes">Send</property>
+                <property name="use_action_appearance">False</property>
                 <property name="visible">True</property>
                 <property name="can_focus">True</property>
                 <property name="receives_default">True</property>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]