Thanks for the investigation, and yes, this three stage lookup exists for most 
of Onboard's files. The problem seems to be that stage 1) is meant for absolute 
paths, rather than local directories, but this isn't enforced. As you 
discovered, having a file in the current directory with the same name as the 
layout to be loaded triggers this bug.
I think, instead of looking at the various extensions, we can simply check for 
an absolute path. I'll look into that.

Good to hear you're happy with 0.99. I appreciate the feedback, we don't
get that much for Precise.

One more suggestion: you can of course copy layouts by hand, but the
easiest way to start a new layout is by pressing the "Personalize"
button in Preferences->Layouts. This way you get copies of all the
necessary files, and the filename references in the *.onboard file are
adjusted too.


** Also affects: onboard
   Importance: Undecided
       Status: New

** Changed in: onboard (Ubuntu)
       Status: New => Confirmed

** Changed in: onboard
       Status: New => Confirmed

** Changed in: onboard
   Importance: Undecided => Low

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to onboard in Ubuntu.
https://bugs.launchpad.net/bugs/1249493

Title:
  onboard keyboard crashes when started in node.js running custom layout

Status in Onboard on-screen keyboard:
  Confirmed
Status in “onboard” package in Ubuntu:
  Confirmed

Bug description:
  lsb_release -rd:
  Description:  Ubuntu 12.04.1 LTS
  Release:      12.04

  apt-cache policy onboard:
  onboard:
    Installed: 0.99.0-0ppa~precise1
    Candidate: 0.99.0-0ppa~precise1
    Version table:
   *** 0.99.0-0ppa~precise1 0
          500 http://ppa.launchpad.net/onboard/stable/ubuntu/ precise/main 
amd64 Packages
          100 /var/lib/dpkg/status
       0.97.0-0ubuntu4 0
          500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 
Packages
       0.97.0-0ubuntu3 0
          500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

  apt-cache policy python:
  python:
    Installed: 2.7.3-0ubuntu2.2
    Candidate: 2.7.3-0ubuntu2.2
    Version table:
   *** 2.7.3-0ubuntu2.2 0
          500 http://us.archive.ubuntu.com/ubuntu/ precise-updates/main amd64 
Packages
          100 /var/lib/dpkg/status
       2.7.3-0ubuntu2 0
          500 http://us.archive.ubuntu.com/ubuntu/ precise/main amd64 Packages

  
  I thought I had everything setup just the way I wanted it, but all the 
sudden, it started having problems on one of my three deployments.  Don't 
really know what happened as everyone swears they didn't do anything.  I have 
installed onboard 0.99 from the stable ppa onto Ubuntu 12.04.  I have python 
2.7.3.

  Here is my situation:
  1)  When I try to open onboard with a custom layout from the console, it 
works fine
  2)  When I try to open onboard with a non-custom layout (like Compact 
specifically is what I tested) programmatically from within a node.js program 
it works fine
  3)  When I try to open onboard with a custom layout (made from Compact, not 
even modified yet) programmatically from within a node.js program, it crashes 
with the following error messages put out to stderr:

   Traceback (most recent call last):
    File "/usr/bin/onboard", line 16, in <module>
      ob = Onboard()
    File "/usr/lib/python3/dist-packages/Onboard/OnboardGtk.py", line 111, in 
__init__
      self.init()
    File "/usr/lib/python3/dist-packages/Onboard/OnboardGtk.py", line 180, in 
init
      self.reload_layout()
    File "/usr/lib/python3/dist-packages/Onboard/OnboardGtk.py", line 560, in 
reload_layout
      self.load_layout(layout_filename, color_scheme_filename)
    File "/usr/lib/python3/dist-packages/Onboard/OnboardGtk.py", line 581, in 
load_layout
      layout = LayoutLoaderSVG().load(vk, layout_filename, color_scheme)
    File "/usr/lib/python3/dist-packages/Onboard/LayoutLoaderSVG.py", line 84, 
in load
      os.path.dirname(layout_filename))
    File "/usr/lib/python3/dist-packages/Onboard/LayoutLoaderSVG.py", line 103, 
in _load
      return self._load_layout(layout_filename, parent_item)
    File "/usr/lib/python3/dist-packages/Onboard/LayoutLoaderSVG.py", line 111, 
in _load_layout
      dom = minidom.parse(f).documentElement
    File "/usr/lib/python3.2/xml/dom/minidom.py", line 1945, in parse
      return expatbuilder.parse(file)
    File "/usr/lib/python3.2/xml/dom/expatbuilder.py", line 928, in parse
      result = builder.parseFile(file)
    File "/usr/lib/python3.2/xml/dom/expatbuilder.py", line 207, in parseFile
      parser.Parse(buffer, 0)
  xml.parsers.expat.ExpatError: syntax error: line 2, column 0

  Here is the xml file named NextGen.onboard that it's crashing from:
  <?xml version="1.0" ?>
  <keyboard id="Compact" format="3.1">

      <include file='key_defs.xml'/>

      <box border="1" spacing="1.5" orientation="vertical">

          <!--- word suggestions -->
          <panel filename='Compact-Alpha.svg' scan_priority='1'>
              <include file='word_suggestions.xml'/>
          </panel>

          <box spacing='1.5'>
              <box spacing='2'>
                  <!--- keyboard, multiple layers -->
                  <panel>
                      <panel layer="alpha" filename="Compact-Alpha.svg">
                          <key group="alphanumeric" id="AB01"/>
                          <key group="alphanumeric" id="AE02"/>
                          <key group="alphanumeric" id="AE03"/>
                          <key group="alphanumeric" id="AD09"/>
                          <key group="alphanumeric" id="AE01"/>
                          <key group="alphanumeric" id="AE06"/>
                          <key group="alphanumeric" id="AE07"/>
                          <key group="alphanumeric" id="AE04"/>
                          <key group="alphanumeric" id="AE05"/>
                          <key group="alphanumeric" id="AD03"/>
                          <key group="alphanumeric" id="AD02"/>
                          <key group="alphanumeric" id="AD01"/>
                          <key group="alphanumeric" id="AE09"/>
                          <key group="alphanumeric" id="AD07"/>
                          <key group="alphanumeric" id="AD06"/>
                          <key group="alphanumeric" id="AD05"/>
                          <key group="alphanumeric" id="AD04"/>
                          <key group="alphanumeric" id="AB10"/>
                          <key group="alphanumeric" id="AC11"/>
                          <key group="alphanumeric" id="AC10"/>
                          <key group="alphanumeric" id="TLDE"/>
                          <key group="alphanumeric" id="LSGT"/>
                          <key group="alphanumeric" id="BKSL"/>
                          <key group="alphanumeric" id="AD10"/>
                          <key group="alphanumeric" id="AD11"/>
                          <key group="alphanumeric" id="AD12"/>
                          <key group="alphanumeric" id="AB08"/>
                          <key group="alphanumeric" id="AE11"/>
                          <key group="alphanumeric" id="AE10"/>
                          <key group="alphanumeric" id="AE12"/>
                          <key group="alphanumeric" id="AC04"/>
                          <key group="alphanumeric" id="AC05"/>
                          <key group="alphanumeric" id="AC06"/>
                          <key group="alphanumeric" id="AC07"/>
                          <key group="alphanumeric" id="AB09"/>
                          <key group="alphanumeric" id="AC01"/>
                          <key group="alphanumeric" id="AC02"/>
                          <key group="alphanumeric" id="AC03"/>
                          <key group="alphanumeric" id="AB05"/>
                          <key group="alphanumeric" id="AB04"/>
                          <key group="alphanumeric" id="AE08"/>
                          <key group="alphanumeric" id="AB06"/>
                          <key group="alphanumeric" id="AC08"/>
                          <key group="alphanumeric" id="AC09"/>
                          <key group="alphanumeric" id="AB03"/>
                          <key group="alphanumeric" id="AB02"/>
                          <key group="alphanumeric" id="AD08"/>
                          <key group="alphanumeric" id="AB07"/>

                          <key group='misc'      id='CAPS'/>
                          <key group='shifts'    id='LFSH'/>
                          <key group='shifts'    id='RTSH'/>
                          <key group='bottomrow' id='LCTL'/>
                          <key group='bottomrow' id='LALT'/>
                          <key group='bottomrow' id='RALT'/>
                          <key group="bottomrow" id="LWIN"/>

                          <key group="bottomrow" id="SPCE"/>
                          <key group="bottomrow" id="DELE.next-to-backspace"/>
                          <key group="bottomrow" id="BKSP"/>
                          <key group="misc" id="TAB"/>
                          <key group="misc" id="RTRN"/>
                          <key group="directions_alpha" id="LEFT"/>
                          <key group="directions_alpha" id="RGHT"/>
                          <key group="directions_alpha" id="UP"/>
                          <key group="directions_alpha" id="DOWN"/>
                      </panel>
                      <panel layer="numbers" filename="Compact-Numbers.svg" 
border="2">
                          <key group='keypadmisc' id='NMLK' scan_priority='2'/>
                          <key group="keypadmisc" id="KPDL" scan_priority="2"/>
                          <key group="keypadmisc" id="KPEN" scan_priority="2"/>
                          <key group="keypadnumber" id="KP0" scan_priority="2"/>
                          <key group="keypadnumber" id="KP1" scan_priority="2"/>
                          <key group="keypadnumber" id="KP2" scan_priority="2"/>
                          <key group="keypadnumber" id="KP3" scan_priority="2"/>
                          <key group="keypadnumber" id="KP4" scan_priority="2"/>
                          <key group="keypadnumber" id="KP5" scan_priority="2"/>
                          <key group="keypadnumber" id="KP6" scan_priority="2"/>
                          <key group="keypadnumber" id="KP7" scan_priority="2"/>
                          <key group="keypadnumber" id="KP8" scan_priority="2"/>
                          <key group="keypadnumber" id="KP9" scan_priority="2"/>
                          <key group="keypadoperators" id="KPSU" 
scan_priority="2"/>
                          <key group="keypadoperators" id="KPDV" 
scan_priority="2"/>
                          <key group="keypadoperators" id="KPAD" 
scan_priority="2"/>
                          <key group="keypadoperators" id="KPMU" 
scan_priority="2"/>
                          <key group="directions" id="LEFT" scan_priority="1"/>
                          <key group="directions" id="RGHT" scan_priority="1"/>
                          <key group="directions" id="UP" scan_priority="1"/>
                          <key group="directions" id="DOWN" scan_priority="1"/>
                          <key group="editing" id="INS"/>
                          <key group="editing" id="DELE"  label='Del' image=''/>
                          <key group="editing" id="HOME"/>
                          <key group="editing" id="END"/>
                          <key group="editing" id="PGUP"/>
                          <key group="editing" id="PGDN"/>

                          <key group="bottomrow" id="ESC"/>
                          <key group="fkeys" id="F1.rows_of_six"/>
                          <key group="fkeys" id="F2.rows_of_six"/>
                          <key group="fkeys" id="F3.rows_of_six"/>
                          <key group="fkeys" id="F4.rows_of_six"/>
                          <key group="fkeys" id="F5.rows_of_six"/>
                          <key group="fkeys" id="F6.rows_of_six"/>
                          <key group="fkeys" id="F7.rows_of_six"/>
                          <key group="fkeys" id="F8.rows_of_six"/>
                          <key group="fkeys" id="F9.rows_of_six"/>
                          <key group="fkeys" id="F12.rows_of_six"/>
                          <key group="fkeys" id="F10.rows_of_six"/>
                          <key group="fkeys" id="F11.rows_of_six"/>
                          <key group="editing" id="Prnt" scan_priority="1"/>
                          <key group="editing" id="Pause" scan_priority="1"/>
                          <key group="editing" id="Scroll" scan_priority="1"/>
                      </panel>
                      <panel layer="utils" filename="Compact-Utils.svg" 
border="2">
                          <key group='snippets' id='m0'/>
                          <key group='snippets' id='m1'/>
                          <key group='snippets' id='m2'/>
                          <key group='snippets' id='m3'/>
                          <key group='snippets' id='m4'/>
                          <key group='snippets' id='m5'/>
                          <key group='snippets' id='m6'/>
                          <key group='snippets' id='m7'/>
                          <key group='snippets' id='m8'/>
                          <key group='snippets' id='m9'/>
                          <key group='snippets' id='m10'/>
                          <key group='snippets' id='m11'/>
                          <key group='snippets' id='m12'/>
                          <key group='snippets' id='m13'/>
                          <key group='snippets' id='m14'/>
                          <key group='snippets' id='m15'/>
                          <key group='bottomrow' id='quit' scan_priority="1"/>
                          <key group='bottomrow' id='settings' 
scan_priority="1"/>
                      </panel>
                  </panel>

              </box>

              <!--- click helpers -->
              <panel id="click" filename="Compact-Alpha.svg" >
                  <key group='click' id='middleclick'/>
                  <key group='click' id='secondaryclick'/>
                  <key group='click' id='doubleclick'/>
                  <key group='click' id='dragclick'/>
                  <key group='click' id='hoverclick.bottom-row' 
unlatch_layer="false"/>
              </panel>

              <!--- side bar -->
              <panel id="paneswitch" filename="Compact-Alpha.svg">        
                  <box compact="true" orientation='vertical'>
                      <panel group='nowordlist'>
                          <key group='bottomrow' id='hide'/>
                          <box orientation='vertical'>
                              <box orientation="horizontal" expand="false">
                                  <key group="bottomrow" id="showclick"/>
                                  <key group="bottomrow" id="move"/>
                              </box>
                              <key group="bottomrow" id="layer0" 
scan_priority="3"/>
                              <key group="bottomrow" id="layer1" 
scan_priority="3"/>
                              <key group="bottomrow" id="layer2" 
scan_priority="3"/>
                          </box>
                      </panel>
                      <panel group='wordlist'>
                          <box orientation='vertical'>
                              <key group='sidebar' id='move' 
svg_id='move.wordlist' expand='false' label_margin='2.5'/>
                              <key group='sidebar' id='showclick' 
svg_id='showclick.wordlist' label_margin='2' expand='false'/>
                              <key group='bottomrow' id='layer0' 
svg_id='layer0.wordlist' scan_priority='3'/>
                              <key group='bottomrow' id='layer1' 
svg_id='layer1.wordlist' scan_priority='3'/>
                              <key group="bottomrow" id="layer2" 
svg_id='layer2.wordlist' scan_priority="3"/>
                          </box>
                      </panel>
                  </box>
              </panel>

          </box>
      </box>
  </keyboard>

  I have put this file through xml validators and it comes up clean.

  I googled the first error about OnboardGtk.py line 111 and found that
  others fixed their problems by making sure they had librsvg2-common
  installled, but I already had that installed.  Tried to install anyway
  just to make sure there wasn't an upgrade problem, but it said I was
  on the latest version.

  This one has really got me stumped and I wonder if it's not some sort
  of problem with onboard hence why I'm posting what I think is a bug.

To manage notifications about this bug go to:
https://bugs.launchpad.net/onboard/+bug/1249493/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to