[Sugar-devel] [PATCH] touchpad section for Sugar Control Panel

Paul Fox pgf at laptop.org
Fri Jul 30 11:39:27 EDT 2010


hi walter -- looks good. the initialization code in olpc-utils until
this patch makes it to all the right places.

paul

i'll leave the initialization code in olpc-utils 
walter wrote:
 > Sorry. -u this time:
 > 
 > --- /home/walter/Desktop/walters-sugar-clone/extensions/deviceicon/touchpad.py	
 > 2010-07-20
 > 13:23:44.000000000 -0400
 > +++ touchpad.py	2010-07-29 22:25:37.000000000 -0400
 > @@ -32,8 +32,8 @@
 >  STATUS_TEXT = {TOUCHPAD_MODES[0]: _('finger'), TOUCHPAD_MODES[1]: _('stylus')}
 >  STATUS_ICON = {TOUCHPAD_MODES[0]: 'touchpad-' + TOUCHPAD_MODES[0],
 >                 TOUCHPAD_MODES[1]: 'touchpad-' + TOUCHPAD_MODES[1]}
 > -# FLAG_PATH is used to preserve status between boots.
 > -FLAG_PATH = '/home/olpc/.olpc-pentablet-mode'
 > +# FLAG_FILE is used to preserve status between boots.
 > +FLAG_FILE = '.olpc-pentablet-mode'
 >  # NODE_PATH is used to communicate with the touchpad device.
 >  NODE_PATH = '/sys/devices/platform/i8042/serio1/ptmode'
 > 
 > @@ -102,6 +102,10 @@
 >      """ Touchpad palette only appears when the device exisits. """
 >      if os.path.exists(NODE_PATH):
 >          tray.add_device(DeviceView())
 > +        # if _flag_path exists, set the initial device value to stylus
 > +        _flag_path = os.join(os.environ['HOME'], FLAG_FILE)
 > +        if os.path.exists(_flag_path):
 > +            write_to_node_file(str(TOUCHPAD_MODES.index('stylus')))
 > 
 > 
 >  def read_touchpad_mode():
 > @@ -117,13 +121,23 @@
 >      """ Write the touchpad mode to the node path and set/unset the flag. """
 >      touchpad_mode_index = TOUCHPAD_MODES.index(touchpad)
 > 
 > -    node_file_handle = open(NODE_PATH, 'w')
 > -    node_file_handle.write(str(touchpad_mode_index))
 > -    node_file_handle.close()
 > +    write_to_node_file(str(touchpad_mode_index))
 > 
 > +    _flag_path = os.join(os.environ['HOME'], FLAG_FILE)
 >      if touchpad_mode_index == 0:
 > -        if os.path.exists(FLAG_PATH):
 > +        if os.path.exists(_flag_path):
 >              os.remove(FLAG_PATH)
 >      else:
 > -        flag_file_handle = open(FLAG_PATH, 'w')
 > +        flag_file_handle = open(_flag_path, 'w')
 >          flag_file_handle.close()
 > +
 > +
 > +def write_to_node_file(value):
 > +    """ Write to node path, catching exception is there is a problem """
 > +    try:
 > +        node_file_handle = open(NODE_PATH, 'w')
 > +    except IOError, e:
 > +        print e
 > +        return
 > +    node_file_handle.write(value)
 > +    node_file_handle.close()
 > 
 > On Thu, Jul 29, 2010 at 11:20 PM, Paul Fox <pgf at laptop.org> wrote:
 > > walter wrote:
 > >  > On Thu, Jul 29, 2010 at 5:37 PM, Paul Fox <pgf at laptop.org> wrote:
 > >  > > walter wrote:
 > >  > >  > On Thu, Jul 29, 2010 at 6:27 AM, pbrobinson at gmail.com
 > >  > >  > <pbrobinson at gmail.com> wrote:
 > >  > >  > > On Wed, Jul 28, 2010 at 3:41 PM, Sascha Silbe
 > >  > >  > > <sascha-ml-ui-sugar-devel at silbe.org> wrote:
 > >  > >  > >> Excerpts from Paul Fox's message of Wed Jul 28 16:01:22 +0200 2010:
 > >  > >  > >>> sascha wrote:
 > >  > >  > >>>  > Even your latest patch still contains code that is specific to 
 > OLPC
 > >  > >  > builds and will break on other systems.
 > >  > >  > >>>  > Of course it's perfectly fine for you to say you only care 
 > about
 > >  > OLPC
 > >  > >  > builds for XO-1 (because the number of XO-1s running non-OLPC builds 
 > is
 > >  > >  > minimal, especially if you don't count developers). But in that case 
 > your
 > >  > patch
 > >  > >  > should be included in the OLPC builds, not in Sugar mainline.
 > >  > >  > >>>
 > >  > >  > >>> can you remind me of the specific issue(s) here?
 > >  > >  > >> I can remember two issues (there might be others as well):
 > >  > >  > >> - hardcoded, absolute path (/home/olpc/whatever)
 > >  > >  > >
 > >  > >  > > I agree that it shouldn't ever user /home/olpc as hardcoded. At 
 > least
 > >  > >  > > you ~/.olpc-blah as it will then work on what ever distro and what
 > >  > >  > > ever user. I'm not sure of the general standard to use for this.
 > >  > >  >
 > >  > >  > How's this look?
 > >  > >
 > >  > > walter -- i didn't think of this when we were designing all of
 > >  > > this:  how about if, in addition to this patch, you checked at sugar
 > >  > > startup time and used the presence of that file in $HOME as an
 > >  > > indication that you should set ptmode for the user?  then i could
 > >  > > eliminate a chunk of the code from olpc-utils that sascha was
 > >  > > complaining about.
 > >  > >
 > >  > > btw -- i just looked at your patch again -- what happens if
 > >  > > NODE_PATH can't be opened for writing?  write_touchpad_mode()
 > >  > > should fail gracefully in that case.  making the node writeable
 > >  > > is the one line of code that will need to remain external to
 > >  > > sugar, and we shouldn't assume that it has happened.  i'm
 > >  > > referring to this:
 > >  > >
 > >  > >    +def write_touchpad_mode(touchpad):
 > >  > >    +    """ Write the touchpad mode to the node path and set/unset the 
 > flag.
 > >  > """
 > >  > >    +    touchpad_mode_index = TOUCHPAD_MODES.index(touchpad)
 > >  > >    +
 > >  > >    +    node_file_handle = open(NODE_PATH, 'w')
 > >  > >    +    node_file_handle.write(str(touchpad_mode_index))
 > >  > >    +    node_file_handle.close()
 > >  > >    +
 > >  > >    +    if touchpad_mode_index == 0:
 > >  > >    +        if os.path.exists(FLAG_PATH):
 > >  > >    +            os.remove(FLAG_PATH)
 > >  > >    +    else:
 > >  > >    +        flag_file_handle = open(FLAG_PATH, 'w')
 > >  > >    +        flag_file_handle.close()
 > >  > >
 > >  > > paul
 > >  > >
 > >  > >
 > >  > >  >
 > >  > >  > 35,36c35,36
 > >  > >  > < # FLAG_PATH is used to preserve status between boots.
 > >  > >  > < FLAG_PATH = '/home/olpc/.olpc-pentablet-mode'
 > >  > >  > ---
 > >  > >  > > # FLAG_FILE is used to preserve status between boots.
 > >  > >  > > FLAG_FILE = '.olpc-pentablet-mode'
 > >  > >  > 123a124
 > >  > >  > >     _flag_path = os.join(os.environ['HOME'], FLAG_FILE)
 > >  > >  > 125,126c126,127
 > >  > >  > <         if os.path.exists(FLAG_PATH):
 > >  > >  > <             os.remove(FLAG_PATH)
 > >  > >  > ---
 > >  > >  > >         if os.path.exists(_flag_path):
 > >  > >  > >             os.remove(_flag_path)
 > >  > >  > 128c129
 > >  > >  > <         flag_file_handle = open(FLAG_PATH, 'w')
 > >  > >  > ---
 > >  > >  > >         flag_file_handle = open(_flag_path, 'w')
 > >  > >  >
 > >  > >  > -walter
 > >  > >  > >
 > >  > >  > > Peter
 > >  > >  > > _______________________________________________
 > >  > >  > > Sugar-devel mailing list
 > >  > >  > > Sugar-devel at lists.sugarlabs.org
 > >  > >  > > http://lists.sugarlabs.org/listinfo/sugar-devel
 > >  > >  > >
 > >  > >  >
 > >  > >  >
 > >  > >  >
 > >  > >  > --
 > >  > >  > Walter Bender
 > >  > >  > Sugar Labs
 > >  > >  > http://www.sugarlabs.org
 > >  > >  > _______________________________________________
 > >  > >  > Sugar-devel mailing list
 > >  > >  > Sugar-devel at lists.sugarlabs.org
 > >  > >  > http://lists.sugarlabs.org/listinfo/sugar-devel
 > >  > >
 > >  > > =---------------------
 > >  > >  paul fox, pgf at laptop.org
 > >  > >
 > >  >
 > >  > This do the trick?
 > >
 > > it might.  it's really hard to tell without the -u option to
 > > patch.  line number patches are so last century.  ;-)
 > >
 > > paul
 > >
 > >  >
 > >  > 35,36c35,36
 > >  > < # FLAG_PATH is used to preserve status between boots.
 > >  > < FLAG_PATH = '/home/olpc/.olpc-pentablet-mode'
 > >  > ---
 > >  > > # FLAG_FILE is used to preserve status between boots.
 > >  > > FLAG_FILE = '.olpc-pentablet-mode'
 > >  > 104a105,108
 > >  > >         _flag_path = os.join(os.environ['HOME'], FLAG_FILE)
 > >  > >         # if _flag_path exists, set the initial device value to stylus
 > >  > >         if os.path.exists(_flag_path):
 > >  > >             write_to_node_file(str(TOUCHPAD_MODES.index('stylus')))
 > >  > 120,122c124
 > >  > <     node_file_handle = open(NODE_PATH, 'w')
 > >  > <     node_file_handle.write(str(touchpad_mode_index))
 > >  > <     node_file_handle.close()
 > >  > ---
 > >  > >     write_to_node_file(str(touchpad_mode_index))
 > >  > 123a126
 > >  > >     _flag_path = os.join(os.environ['HOME'], FLAG_FILE)
 > >  > 125c128
 > >  > <         if os.path.exists(FLAG_PATH):
 > >  > ---
 > >  > >         if os.path.exists(_flag_path):
 > >  > 128c131
 > >  > <         flag_file_handle = open(FLAG_PATH, 'w')
 > >  > ---
 > >  > >         flag_file_handle = open(_flag_path, 'w')
 > >  > 129a133,143
 > >  > >
 > >  > >
 > >  > > def write_to_node_file(value):
 > >  > >     """ Write to node path, catching exception is there is a problem """
 > >  > >     try:
 > >  > >         node_file_handle = open(NODE_PATH, 'w')
 > >  > >     except IOError, e:
 > >  > >         print e
 > >  > >         return
 > >  > >     node_file_handle.write(value)
 > >  > >     node_file_handle.close()
 > >  >
 > >  > -walter
 > >  > --
 > >  > Walter Bender
 > >  > Sugar Labs
 > >  > http://www.sugarlabs.org
 > >
 > > =---------------------
 > >  paul fox, pgf at laptop.org
 > >
 > 
 > 
 > 
 > -- 
 > Walter Bender
 > Sugar Labs
 > http://www.sugarlabs.org

=---------------------
 paul fox, pgf at laptop.org


More information about the Sugar-devel mailing list