# HG changeset patch # User Jeff Hammel # Date 1377125649 25200 # Node ID 95ba5770d2f05696cb47a75c23c3965dbf32f4ef # Parent 2e51a55d303d109ffe2cd957538d2c8efd21616e file decorator diff -r 2e51a55d303d -r 95ba5770d2f0 .fluxbox/init --- a/.fluxbox/init Wed Aug 14 10:25:08 2013 -0700 +++ b/.fluxbox/init Wed Aug 21 15:54:09 2013 -0700 @@ -1,111 +1,111 @@ -session.screen0.rootCommand: fbsetbg ~/image/wallpaper +session.screen0.window.focus.alpha: 122 +session.screen0.window.unfocus.alpha: 47 +session.screen0.menu.alpha: 82 +session.screen0.tab.alignment: Left +session.screen0.tab.width: 0 +session.screen0.tab.rotatevertical: True +session.screen0.tab.placement: TopLeft +session.screen0.tab.height: 0 +session.screen0.clientMenu.usePixmap: true +session.screen0.slit.direction: Vertical +session.screen0.slit.maxOver: true +session.screen0.slit.onhead: 0 +session.screen0.slit.placement: RightBottom +session.screen0.slit.alpha: 255 +session.screen0.slit.autoHide: false +session.screen0.slit.onTop: False +session.screen0.slit.layer: Bottom +session.screen0.slit.acceptKdeDockapps: true +session.screen0.iconbar.iconWidth: 70 +session.screen0.iconbar.wheelMode: Screen +session.screen0.iconbar.alignment: Relative +session.screen0.iconbar.mode: {static groups} (workspace) +session.screen0.iconbar.usePixmap: true +session.screen0.iconbar.iconTextPadding: 10 +session.screen0.iconbar.deiconifyMode: Follow +session.screen0.toolbar.visible: true +session.screen0.toolbar.maxOver: true +session.screen0.toolbar.alpha: 50 +session.screen0.toolbar.onhead: 0 +session.screen0.toolbar.widthPercent: 44 +session.screen0.toolbar.placement: BottomCenter +session.screen0.toolbar.tools: workspacename, iconbar, systemtray, clock +session.screen0.toolbar.onTop: False +session.screen0.toolbar.autoHide: false +session.screen0.toolbar.layer: Desktop +session.screen0.toolbar.height: 0 session.screen0.titlebar.left: Stick session.screen0.titlebar.right: Minimize Maximize Close -session.screen0.clientMenu.usePixmap: true -session.screen0.menu.alpha: 82 -session.screen0.slit.acceptKdeDockapps: true -session.screen0.slit.maxOver: true -session.screen0.slit.placement: RightBottom -session.screen0.slit.alpha: 255 -session.screen0.slit.onTop: False -session.screen0.slit.layer: Bottom -session.screen0.slit.direction: Vertical -session.screen0.slit.onhead: 0 -session.screen0.slit.autoHide: false session.screen0.tabs.intitlebar: true session.screen0.tabs.maxOver: false session.screen0.tabs.usePixmap: false -session.screen0.tab.width: 0 -session.screen0.tab.height: 0 -session.screen0.tab.alignment: Left -session.screen0.tab.placement: TopLeft -session.screen0.tab.rotatevertical: True -session.screen0.iconbar.iconTextPadding: 10 -session.screen0.iconbar.wheelMode: Screen -session.screen0.iconbar.usePixmap: true -session.screen0.iconbar.mode: {static groups} (workspace) -session.screen0.iconbar.iconWidth: 70 -session.screen0.iconbar.alignment: Relative -session.screen0.iconbar.deiconifyMode: Follow -session.screen0.window.focus.alpha: 122 -session.screen0.window.unfocus.alpha: 47 -session.screen0.toolbar.visible: true -session.screen0.toolbar.maxOver: true -session.screen0.toolbar.widthPercent: 44 -session.screen0.toolbar.placement: BottomCenter -session.screen0.toolbar.alpha: 50 -session.screen0.toolbar.onTop: False -session.screen0.toolbar.tools: workspacename, iconbar, systemtray, clock -session.screen0.toolbar.height: 0 -session.screen0.toolbar.layer: Desktop -session.screen0.toolbar.autoHide: false -session.screen0.toolbar.onhead: 0 session.screen0.overlay.lineWidth: 1 session.screen0.overlay.lineStyle: LineSolid session.screen0.overlay.joinStyle: JoinMiter session.screen0.overlay.capStyle: CapNotLast -session.screen0.menuDelay: 0 -session.screen0.sloppywindowgrouping: true -session.screen0.autoRaise: false -session.screen0.resizeMode: Bottom -session.screen0.edgeSnapThreshold: 0 -session.screen0.followModel: Ignore -session.screen0.noFocusWhileTypingDelay: 0 -session.screen0.decorateTransient: true +session.screen0.focusNewWindows: true session.screen0.fullMaximization: true +session.screen0.colPlacementDirection: TopToBottom session.screen0.maxIgnoreIncrement: true -session.screen0.allowRemoteActions: false -session.screen0.tabFocusModel: ClickToTabFocus -session.screen0.defaultDeco: NORMAL -session.screen0.tooltipDelay: 500 -session.screen0.focusModel: MouseFocus -session.screen0.workspaceNames: one,two,three,four,five,six, -session.screen0.windowScrollReverse: false -session.screen0.imageDither: false -session.screen0.strftimeFormat: %k:%M -session.screen0.rowPlacementDirection: LeftToRight -session.screen0.reversewheeling: false -session.screen0.menuMode: Delay -session.screen0.showwindowposition: true -session.screen0.maxDisableResize: false -session.screen0.focusNewWindows: true -session.screen0.colPlacementDirection: TopToBottom session.screen0.desktopwheeling: true +session.screen0.allowRemoteActions: false session.screen0.windowScrollAction: +session.screen0.tabFocusModel: ClickToTabFocus session.screen0.focusLastWindow: true +session.screen0.defaultDeco: NORMAL session.screen0.maxDisableMove: false +session.screen0.tooltipDelay: 500 session.screen0.clickRaises: true +session.screen0.focusModel: MouseFocus session.screen0.windowPlacement: RowSmartPlacement +session.screen0.workspaceNames: one,two,three,four,five,six, +session.screen0.menuDelay: 0 +session.screen0.windowScrollReverse: false +session.screen0.userFollowModel: Follow +session.screen0.imageDither: false +session.screen0.sloppywindowgrouping: true +session.screen0.workspaces: 6 +session.screen0.strftimeFormat: %k:%M +session.screen0.autoRaise: false +session.screen0.workspacewarping: true +session.screen0.rowPlacementDirection: LeftToRight +session.screen0.resizeMode: Bottom +session.screen0.windowMenu: +session.screen0.reversewheeling: false +session.screen0.edgeSnapThreshold: 0 +session.screen0.antialias: true session.screen0.rootCommand: fbsetbg ~/image/wallpaper -session.screen0.userFollowModel: Follow -session.screen0.workspaces: 6 -session.screen0.workspacewarping: true -session.screen0.windowMenu: -session.screen0.antialias: true +session.screen0.menuMode: Delay +session.screen0.followModel: Ignore session.screen0.opaqueMove: false +session.screen0.showwindowposition: true +session.screen0.noFocusWhileTypingDelay: 0 session.screen0.demandsAttentionTimeout: 500 +session.screen0.maxDisableResize: false +session.screen0.decorateTransient: true session.screen0.menuDelayClose: 0 +session.groupFile: ~/.fluxbox/groups session.cacheLife: 5 +session.useMod1: true +session.autoRaiseDelay: 250 +session.imageDither: True session.configVersion: 13 -session.imageDither: True +session.keyFile: ~/.fluxbox/keys session.styleOverlay: ~/.fluxbox/overlay -session.menuFile: ~/.fluxbox/menu -session.focusTabMinWidth: 0 -session.doubleClickInterval: 250 -session.colorsPerChannel: 4 -session.tabs: false -session.numLayers: 13 -session.groupFile: ~/.fluxbox/groups -session.autoRaiseDelay: 250 +session.ignoreBorder: false session.forcePseudoTransparency: true session.appsFile: ~/.fluxbox/apps +session.menuFile: ~/.fluxbox/menu +session.styleFile: ~/.fluxbox/styles/Black session.tabPadding: 0 +session.focusTabMinWidth: 0 +session.tabsAttachArea: Window session.cacheMax: 200 +session.doubleClickInterval: 250 +session.opaqueMove: False session.modKey: Mod1 +session.colorsPerChannel: 4 +session.numLayers: 13 +session.tabs: false session.slitlistFile: ~/.fluxbox/slitlist -session.useMod1: true -session.keyFile: ~/.fluxbox/keys -session.ignoreBorder: false -session.opaqueMove: False -session.styleFile: ~/.fluxbox/styles/Black -session.tabsAttachArea: Window diff -r 2e51a55d303d -r 95ba5770d2f0 python/fileobj.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/python/fileobj.py Wed Aug 21 15:54:09 2013 -0700 @@ -0,0 +1,46 @@ +#!/usr/bin/env python + +""" +filename -> file-like object as a decorator +""" + +import optparse +import os +import sys + +string = (basestring,) + +class fileobj(object): + def __init__(self, arg, *args, **kwargs): + self._args = [arg] + list(args) + self._kwargs = kwargs + # mode, filename, ... + + # function + self.func = arg if not args else None + def __call__(self, *args, **kwargs): + if self.func is None: + raise NotImplementedError + else: + if len(args) and isinstance(args[0], string): + args = list(args) + with file(args[0], 'w') as fp: + args[0] =fp + return self.func(*args, **kwargs) + return self.func(*args, **kwargs) + +if __name__ == '__main__': + # test code + import os + import tempfile + + @fileobj + def test1(fp): + fp.write('foo') + + filename = tempfile.mktemp() + print filename + assert not os.path.exists(filename) + test1(filename) + assert os.path.exists(filename) + print file(filename).read()