[Sugar-devel] [PATCH] touchpad section for Sugar Control Panel
Walter Bender
walter.bender at gmail.com
Fri Jul 30 07:09:20 EDT 2010
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
More information about the Sugar-devel
mailing list