Latin Spelling module

Hello. Anybody know something about a latin language spelling module for Indesign?
Thank you.
Attila

Install from here:
https://addons.mozilla.org/en-US/firefox/language-tools/
And follow instructions how to add or remove from here:
Add or remove Hunspell dictionaries | CC, CS6
  http://helpx.adobe.com/indesign/kb/add_cs_dictionaries.html
Also see in details instructions to add language by Sandee Cohen:
Adding Hunspell Dictionaries to InDesign
http://indesignsecrets.com/adding-hunspell-dictionaries-indesign.php

Similar Messages

  • Unable to isync palm Z22, failing on ical

    just got a new palm z22, set up for isync. i've got Mac OSX 10.3.9, isync 1.5, ical 1.5.5(v670).
    in hotsync conduit manager, for isync conduit, checked "enable isync for this palm device". when i do sync, it takes forever the first time (as expected) but ultimately it fails, hotsync log is pasted below. however, it does look like all my entries (from ical, address book, etc.) DID get added to my palm! however without a successful initial sync i'm assuming subsequent syncs will also take forever and fail.
    checked free space on my palm after sync failure, it says i have free space 19.4M of 24.6M. i have 8 years worth of data in my ical but it's not very big, on palm it says calendar is 672K / 8568 records. interestingly, it also says date book is 467K / 8555 records. i didn't get any conduit conflicts so am not sure why they both are getting updated.
    did see some postings about manually managing conduits in /Library/Application Support/Palm Hotsync/Conduits folders, but after one of my syncs, everything in that folder disappeared! even so, hotsync does seem to run and data gets added to my Palm but sync ultimately fails.
    if anyone could provide some pointers it would be GREATLY appreciated!
    -=-=-=-=-=-=-=-=-=latest HotSync log-=-=-=-=-=-=-=-=-=-=
    HotSync 3.2.1 started 10/23/07 22:19:46
    Loading “Conflict Notifier”
    Notifier 'Conduit Conflict Notifier' version 1.0.0
    Notifier Conduit Conflict Notifier OK
    Handheld device is syncing for the first time
    Local Synchronization
    Syncing via transport “USB”
    Found Palm user “Palm Z22”
    ROM Listing
    FileName Version Type Creator Created Modified Flags
    PmNetLib-netl 00CB LiBr netl 07/29/05 07/29/05 0003
    DmTxn 0002 aexo DmTx 03/14/05 03/14/05 0003
    HsNav 0002 aexo HsEp 08/08/05 08/08/05 0003
    PIMsSupport-pdmE 0008 aexo pdmE 06/16/05 06/16/05 0003
    SecurityAppPatch 0002 aexo secE 08/23/05 08/23/05 0003
    GoLCDExt 0001 aext GAny 08/14/03 08/14/03 0023
    DevicePatch-dphE 0006 aext dphE 07/13/05 07/13/05 0003
    SystemNotify-snfE 0001 aext snfE 07/31/03 07/31/03 0003
    SystemPatch-sphE 0005 aext sphE 06/27/05 06/27/05 0003
    Default Content Loader 0003 appl DCL8 08/09/05 08/09/05 0143
    DynDevInfo-DDIR 0001 appl DDIR 03/26/03 03/26/03 0103
    Display-Dply 0002 appl Dply 08/08/05 08/08/05 0143
    Contacts-PAdd 0001 appl PAdd 08/23/05 08/23/05 0003
    Calendar-PDat 0003 appl PDat 08/23/05 08/23/05 0003
    Memos-PMem 000A appl PMem 08/23/05 08/23/05 004B
    Tasks-PTod 0003 appl PTod 08/23/05 08/23/05 0003
    Clock-PcLK 0005 appl PcLK 04/27/05 04/27/05 004B
    QueriesApp 0001 appl QRYS 09/27/04 09/27/04 014B
    Address Book 0002 appl addr 01/17/05 01/17/05 0103
    Date Book 0002 appl date 01/17/05 01/17/05 0103
    Launcher 021E appl lnch 08/19/05 08/19/05 0003
    Language Picker 0006 appl lpkr 07/13/05 07/13/05 0143
    Memo Pad 0002 appl memo 01/17/05 01/17/05 0103
    Note Pad 000A appl npad 09/07/04 09/07/04 0043
    HiddenPIMsSupport-pdmE 0008 appl pdmE 06/16/05 06/16/05 0103
    Preferences 000B appl pref 10/07/04 10/07/04 004B
    LiveModeApp-rfsL 0003 appl rfsL 08/24/05 08/24/05 0103
    Setup 0006 appl setp 08/19/05 08/19/05 0143
    HotSync 0002 appl sync 09/06/05 09/06/05 0843
    To Do List 0002 appl todo 01/17/05 01/17/05 0103
    DefConnection2DB_enUS 0004 dflt modm 03/31/03 03/31/03 000A
    DefConnection2DB_frFR 0004 dflt modm 04/01/03 04/01/03 000A
    DefConnection2DB_itIT 0004 dflt modm 04/01/03 04/01/03 000A
    DefConnection2DB_deDE 0004 dflt modm 04/01/03 04/01/03 000A
    DefConnection2DB_esES 0004 dflt modm 04/01/03 04/01/03 000A
    DefConnection2DB_ptBR 0004 dflt modm 04/01/03 04/01/03 000A
    IrDA Library 0225 exgl irda 06/13/05 06/13/05 0003
    ExgLocal Library-locl 021C exgl locl 02/16/04 02/16/04 0043
    HostControl Library 0221 hstl host 05/26/05 05/26/05 0003
    PADHTAL Library 0221 htal hpad 05/26/05 05/26/05 0003
    RelHTAL Library 0004 htal hrel 05/12/05 05/12/05 0003
    NandFlashFilesystem 0002 libf NFFS 08/08/05 08/08/05 0003
    FATFS 0225 libf fatf 05/26/05 05/26/05 0003
    FCCMLib 0001 libr FCCM 08/12/02 08/12/02 000B
    GoLCDLib 0001 libr GAny 08/14/03 08/14/03 0023
    HardwareUtils 0002 libr HWut 03/26/03 03/26/03 000B
    MathLib 0001 libr MthL 04/14/99 04/14/99 000B
    VPNShimLib-NLds 0008 libr NLds 07/15/05 07/15/05 0003
    CalendarLib-P1CL 0001 libr P1CL 05/10/05 05/10/05 0003
    ContactsLib-P1CT 0001 libr P1CT 05/10/05 05/10/05 0003
    DeviceRes-PDvc 0003 libr PDvc 08/23/05 08/23/05 0003
    ImageUtils-PIUL 0003 libr PIUL 03/14/05 03/14/05 0003
    IMUMath-PIUM 0003 libr PIUM 03/14/05 03/14/05 0003
    PalmPhotoLib 0001 libr PMPL 08/03/05 08/03/05 0003
    PmKeyLib-PmKe 0001 libr PmKe 05/19/05 05/19/05 0003
    PmSysGadgetLib-PmSg 0001 libr PmSg 09/02/05 09/02/05 0003
    PmSystemLib-PmSy 0001 libr PmSy 05/11/05 05/11/05 0003
    PmUIUtilLib-PmUU 0001 libr PmUU 08/26/05 08/26/05 0063
    TxnLogLib 0001 libr TxLg 03/14/05 03/14/05 000B
    PACE 0225 libr a68k 05/26/05 05/26/05 0003
    AboutBoxLib-abxL 0007 libr abxL 08/10/05 08/10/05 0003
    Address Sort Library 0221 libr adbs 05/26/05 05/26/05 0003
    CategoryLib-catL 0001 libr catL 03/14/05 03/14/05 0103
    ConnectLib-cctL 0002 libr cctL 09/27/04 09/27/04 000B
    CPM Library 0221 libr cpml 05/26/05 05/26/05 0003
    Shortcuts Library 0225 libr graf 05/26/05 05/26/05 0043
    Graffiti 2 Library 0002 libr grft 09/06/05 09/06/05 000B
    HardwareUtils-hwrL 0003 libr hwrL 09/27/04 09/27/04 0003
    LocsLib-locL 0005 libr locL 03/14/05 03/14/05 014B
    MapLib 0001 libr mapL 03/14/05 03/14/05 000B
    Fake Net Library 0069 libr netl 07/15/05 07/15/05 0003
    CompressionPng 0001 libr pclA 07/14/03 07/14/03 0003
    Pdi Library 0221 libr pdil 05/26/05 05/26/05 0003
    PmTraceLib-pmtL 0001 libr pmtL 07/25/05 07/25/05 0003
    PmRemoteFSLib-rfsL 0003 libr rfsL 08/24/05 08/24/05 0003
    SndFileStream-sfsL 0001 libr sfsL 11/02/04 11/02/04 000B
    SSL Library 0221 libr ssl0 05/26/05 05/26/05 0003
    SSL Crypto Library 0221 libr ssl1 05/26/05 05/26/05 0003
    SerialLib 021C libr swrp 02/16/04 02/16/04 0003
    CompressionZlib 0001 libr zclA 03/26/03 03/26/03 0003
    NFFSSlotDriver 0003 libs NFSD 08/23/05 08/23/05 0003
    Latin Locale Module 0005 locm lati 09/06/05 09/06/05 0843
    Loopback NetIF 0221 neti loop 05/26/05 05/26/05 0003
    SLIP NetIF 0221 neti slip 05/26/05 05/26/05 0003
    Display-Dply_enUS 0002 ovly Dply 08/08/05 08/08/05 0943
    GoLCDPanel-GAny_enUS 0002 ovly GAny 09/14/04 09/14/04 0803
    HsNav_enUS 0002 ovly HsEp 08/08/05 08/08/05 0803
    Keylock_enUS 0002 ovly KEYL 09/14/04 09/14/04 0803
    CalendarLib-P1CL_enUS 0001 ovly P1CL 05/10/05 05/10/05 0803
    ContactsLib-P1CT_enUS 0001 ovly P1CT 05/10/05 05/10/05 0803
    Contacts-PAdd_enUS 0001 ovly PAdd 08/23/05 08/23/05 0803
    Calendar-PDat_enUS 0003 ovly PDat 08/23/05 08/23/05 0803
    DeviceRes-PDvc_enUS 0003 ovly PDvc 08/23/05 08/23/05 0803
    PalmPhotoLib_enUS 0001 ovly PMPL 08/03/05 08/03/05 0803
    Memos-PMem_enUS 000A ovly PMem 08/23/05 08/23/05 084B
    Tasks-PTod_enUS 0003 ovly PTod 08/23/05 08/23/05 0803
    Clock-PcLK_enUS 0005 ovly PcLK 04/27/05 04/27/05 084B
    PmSysGadgetLib-PmSg_enUS 0001 ovly PmSg 09/02/05 09/02/05 0803
    PmUIUtilLib-PmUU_enUS 0001 ovly PmUU 08/26/05 08/26/05 0863
    Power_enUS 0004 ovly Powr 09/14/04 09/14/04 0803
    SoundsAlerts_enUS 0003 ovly SdAl 09/14/04 09/14/04 0803
    AboutBoxLib-abxL_enUS 0007 ovly abxL 08/10/05 08/10/05 0803
    Address Book_enUS 0002 ovly addr 01/17/05 01/17/05 0903
    Buttons_enUS 0002 ovly bttn 08/04/05 08/04/05 0803
    CategoryLib-catL_enUS 0001 ovly catL 03/14/05 03/14/05 0903
    ConnectLib-cctL_enUS 0002 ovly cctL 09/27/04 09/27/04 080B
    ColorTheme-colP_enUS 0004 ovly colP 03/11/05 03/11/05 0803
    CPM Library_enUS 0221 ovly cpml 05/26/05 05/26/05 0803
    Date Book_enUS 0002 ovly date 01/17/05 01/17/05 0903
    Touchscreen_enUS 0004 ovly digi 09/14/04 09/14/04 0803
    DevicePatch-dphE_enUS 0006 ovly dphE 07/13/05 07/13/05 0803
    Date & Time_enUS 0005 ovly dttm 09/14/04 09/14/04 0803
    Formats_enUS 0003 ovly frmt 09/14/04 09/14/04 0803
    Shortcuts Library_enUS 0225 ovly graf 05/26/05 05/26/05 0843
    Graffiti 2 Prefs_enUS 0003 ovly grfp 09/14/04 09/14/04 0803
    Graffiti 2 Library_enUS 0002 ovly grft 09/06/05 09/06/05 080B
    IrComm Serial Driver_enUS 0221 ovly ircm 05/26/05 05/26/05 0843
    IrDA Library_enUS 0221 ovly irda 05/26/05 05/26/05 0803
    Latin Locale Module_enUS 0005 ovly lati 09/06/05 09/06/05 0843
    Launcher_enUS 021E ovly lnch 08/19/05 08/19/05 0803
    LocsLib-locL_enUS 0005 ovly locL 03/14/05 03/14/05 094B
    ExgLocal Library-locl_enUS 021C ovly locl 02/16/04 02/16/04 0803
    Memo Pad_enUS 0002 ovly memo 01/17/05 01/17/05 0903
    Connection_enUS 0008 ovly modm 09/14/04 09/14/04 0803
    Fake Net Library_enUS 0069 ovly netl 07/15/05 07/15/05 0803
    Note Pad_enUS 000A ovly npad 09/07/04 09/07/04 0843
    Owner_enUS 0003 ovly ownr 09/14/04 09/14/04 0803
    DeviceResources_enUS 021C ovly pdvc 09/06/05 09/06/05 0843
    Preferences_enUS 000B ovly pref 10/07/04 10/07/04 084B
    Boot_enUS 0002 ovly psys 09/06/05 09/06/05 0843
    Boot_frFR 0002 ovly psys 09/06/05 09/06/05 0843
    Boot_itIT 0002 ovly psys 09/06/05 09/06/05 0843
    Boot_deDE 0002 ovly psys 09/06/05 09/06/05 0843
    Boot_esES 0002 ovly psys 09/06/05 09/06/05 0843
    Boot_ptBR 0002 ovly psys 09/06/05 09/06/05 0843
    UIAppShell_enUS 0002 ovly psys 08/26/05 08/26/05 0803
    Palm OS Data_enUS 021C ovly psys 09/06/05 09/06/05 0843
    Palm OS Data_frFR 021C ovly psys 09/06/05 09/06/05 0843
    Palm OS Data_itIT 021C ovly psys 09/06/05 09/06/05 0843
    Palm OS Data_deDE 021C ovly psys 09/06/05 09/06/05 0843
    Palm OS Data_esES 021C ovly psys 09/06/05 09/06/05 0843
    Palm OS Data_ptBR 021C ovly psys 09/06/05 09/06/05 0843
    LiveModeApp-rfsL_enUS 0003 ovly rfsL 08/24/05 08/24/05 0903
    Security_enUS 0007 ovly scrt 08/25/05 08/25/05 0803
    Setup_enUS 0006 ovly setp 08/19/05 08/19/05 0943
    SndFileStream-sfsL_enUS 0001 ovly sfsL 11/02/04 11/02/04 080B
    ShortCuts_enUS 0003 ovly shct 09/14/04 09/14/04 0803
    SLIP NetIF_enUS 0221 ovly slip 05/26/05 05/26/05 0803
    SerialPhoneTask_enUS 0221 ovly spht 05/26/05 05/26/05 080B
    SSL Library_enUS 0221 ovly ssl0 05/26/05 05/26/05 0803
    SSL Crypto Library_enUS 0221 ovly ssl1 05/26/05 05/26/05 0803
    StdGSMDriver_enUS 021C ovly stgd 02/16/04 02/16/04 086B
    HotSync_enUS 0002 ovly sync 09/06/05 09/06/05 0843
    To Do List_enUS 0002 ovly todo 01/17/05 01/17/05 0903
    GoLCDPanel-GAny 0002 panl GAny 09/14/04 09/14/04 0003
    Keylock 0002 panl KEYL 09/14/04 09/14/04 0003
    Power 0004 panl Powr 09/14/04 09/14/04 0003
    SoundsAlerts 0003 panl SdAl 09/14/04 09/14/04 0003
    Buttons 0002 panl bttn 08/04/05 08/04/05 0003
    ColorTheme-colP 0004 panl colP 03/11/05 03/11/05 0003
    Touchscreen 0004 panl digi 09/14/04 09/14/04 0003
    Date & Time 0005 panl dttm 09/14/04 09/14/04 0003
    Formats 0003 panl frmt 09/14/04 09/14/04 0003
    Graffiti 2 Prefs 0003 panl grfp 09/14/04 09/14/04 0003
    Connection 0008 panl modm 09/14/04 09/14/04 0003
    Owner 0003 panl ownr 09/14/04 09/14/04 0003
    Security 0007 panl scrt 08/25/05 08/25/05 0003
    ShortCuts 0003 panl shct 09/14/04 09/14/04 0003
    StdGSMDriver 021C pdrv stgd 02/16/04 02/16/04 006B
    DAL 0001 rsrc pdal 09/12/05 09/12/05 0003
    DeviceResources 021C rsrc pdvc 09/06/05 09/06/05 0843
    Boot 0002 rsrc psys 09/06/05 09/06/05 0843
    UI 0223 rsrc puil 05/26/05 05/26/05 0003
    PalmAppResources-rscP 0001 rsrc rscP 07/31/03 07/31/03 0003
    Cmd-nettrace 021C sdio nett 02/16/04 02/16/04 0003
    Cmd-ping 021C sdio ping 02/16/04 02/16/04 0003
    Palm OS Data 021C spls psys 09/06/05 09/06/05 0843
    SerialPhoneTask 0221 ttsk spht 05/26/05 05/26/05 000B
    UIAppShell 0002 uish psys 08/26/05 08/26/05 0003
    IrComm Serial Driver 0221 vdrv ircm 05/26/05 05/26/05 0043
    USBDrvr 0001 vdrv pusb 09/12/05 09/12/05 0003
    Serial 0001 vdrv uS24 09/12/05 09/12/05 0003
    RAM Listing
    FileName Version Type Creator Created Modified Flags
    AdditTGSData 0000 AVSU Bmsy 10/23/07 10/23/07 0000
    ADD051SData 0000 AVSU Bmsy 10/23/07 10/23/07 0008
    AdditSystemSData 0064 AVSU Bmsy 10/23/07 10/23/07 0000
    AdditTGVData 0000 AVUD Bmsy 10/23/07 10/23/07 0000
    AddItVData 0000 AVUD Bmsy 10/23/07 10/23/07 0000
    ADD051VData 0000 AVUD Bmsy 10/23/07 10/23/07 0008
    AdditSystemVData 0064 AVUD Bmsy 10/23/07 10/23/07 0000
    Carbs_appendix 0001 Bfdb BfLn 01/14/05 01/14/05 0142
    AddIt_data 0002 Bfdb Bmsy 07/28/05 07/28/05 0042
    AddItdeDEdata 0002 Bfdb Bmsy 07/13/05 07/13/05 0042
    AddItesESdata 0002 Bfdb Bmsy 07/12/05 07/12/05 0042
    AddItfrFRdata 0002 Bfdb Bmsy 07/12/05 07/12/05 0042
    AddItitITdata 0002 Bfdb Bmsy 07/12/05 07/12/05 0042
    AddItptBRdata 0002 Bfdb Bmsy 07/12/05 07/12/05 0042
    ContactsDB-PAdd 0001 DATA PAdd 10/23/07 10/23/07 0000
    CalendarDB-PDat 0001 DATA PDat 10/23/07 10/23/07 0000
    MemosDB-PMem 0001 DATA PMem 10/23/07 10/23/07 0000
    TasksDB-PTod 0001 DATA PTod 10/23/07 10/23/07 0000
    Queries 0000 DATA QRYS 10/23/07 10/23/07 0008
    AddressDB 0000 DATA addr 10/23/07 10/23/07 0000
    DatebookDB 0000 DATA date 10/23/07 10/23/07 0000
    locLDefLocationDB 0002 DATA locL 10/23/07 10/23/07 0008
    MemoDB 0000 DATA memo 10/23/07 10/23/07 0000
    ConnectionMgr50DB 0000 DATA modm 10/23/07 10/23/07 0008
    npadDB 0001 DATA npad 07/28/36 10/23/07 0008
    PIMsSupportStatus-pdmE 0000 DATA pdmE 10/23/07 10/23/07 0000
    ToDoDB 0000 DATA todo 10/23/07 10/23/07 0000
    locLCusLocationDB 0002 DATC locL 10/23/07 10/23/07 0008
    locLTimeZoneDB 0001 DATT locL 10/23/07 10/23/07 0000
    AS_Knowledge-Content 0001 Data BfLn 07/13/05 07/13/05 0042
    ASKnowledgedeDE-Content 0001 Data BfLn 07/13/05 07/13/05 0042
    ASKnowledgeesES-Content 0001 Data BfLn 07/13/05 07/13/05 0042
    ASKnowledgefrFR-Content 0001 Data BfLn 07/13/05 07/13/05 0042
    ASKnowledgeitIT-Content 0001 Data BfLn 07/13/05 07/13/05 0042
    ASKnowledgeptBR-Content 0001 Data BfLn 07/13/05 07/13/05 0042
    Carbs-Content 0001 Data BfLn 03/17/05 03/17/05 0142
    AS_FirstAid-Content 0001 Data BfLn 08/05/05 08/05/05 0042
    AdditTryBuy-Content 0003 Data BfLn 07/28/05 07/28/05 0042
    AdditTryBuy_deDE-Content 0003 Data BfLn 07/22/05 07/22/05 0042
    AdditTryBuy_esES-Content 0003 Data BfLn 07/22/05 07/22/05 0042
    AdditTryBuy_frFR-Content 0003 Data BfLn 07/22/05 07/22/05 0042
    AdditTryBuy_itIT-Content 0003 Data BfLn 07/22/05 07/22/05 0042
    AdditTryBuy_ptBR-Content 0003 Data BfLn 07/22/05 07/22/05 0042
    AdditMyTG-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditMyTG_deDE-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditMyTG_esES-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditMyTG_frFR-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditMyTG_itIT-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditMyTG_ptBR-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditNewsTG-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditNewsTG_deDE-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditNewsTG_esES-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditNewsTG_frFR-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditNewsTG_itIT-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditNewsTG_ptBR-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditShopTG-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditShopTG_deDE-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditShopTG_esES-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditShopTG_frFR-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditShopTG_itIT-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AdditShopTG_ptBR-Content 0004 Data BfLn 08/04/05 08/04/05 0042
    AddItStart-Content 0003 Data Bmsy 08/03/05 08/03/05 0042
    AddItStart_deDE-Content 0003 Data Bmsy 08/03/05 08/03/05 0042
    AddItStart_esES-Content 0003 Data Bmsy 08/03/05 08/03/05 0042
    AddItStart_frFR-Content 0003 Data Bmsy 08/03/05 08/03/05 0042
    AddItStart_itIT-Content 0003 Data Bmsy 08/03/05 08/03/05 0042
    AddItStart_ptBR-Content 0003 Data Bmsy 08/03/05 08/03/05 0042
    Tutorial-Content 0001 Data HsTM 08/24/05 08/24/05 0042
    System DB Chain Head 0000 Dumm HsTr 10/23/07 10/23/07 8000
    DevicePatchVFSCacheDB 0000 a68k a68k 10/23/07 10/23/07 8000
    PACERsrcDB9 0000 a68k a68k 10/23/07 10/23/07 0001
    PACERsrcDB8 0000 a68k a68k 10/23/07 10/23/07 0001
    PACERsrcDB7 0000 a68k a68k 10/23/07 10/23/07 0001
    PACERsrcDB6 0000 a68k a68k 10/23/07 10/23/07 0001
    PACERsrcDB5 0000 a68k a68k 10/23/07 10/23/07 0001
    PACERsrcDB4 0000 a68k a68k 10/23/07 10/23/07 0001
    PACERsrcDB3 0000 a68k a68k 10/23/07 10/23/07 0001
    PACERsrcDB2 0000 a68k a68k 10/23/07 10/23/07 0001
    PACERsrcDB1 0000 a68k a68k 10/23/07 10/23/07 0001
    PACERsrcDB0 0000 a68k a68k 10/23/07 10/23/07 0001
    PACE Data Store Reserve 0000 a68k a68k 10/23/07 10/23/07 0001
    CrazyDaisy 0001 appl AwCD 07/28/05 07/28/05 0043
    CHESS 0002 appl BfCh 08/15/05 08/15/05 0143
    CheckSplit 0003 appl BfCs 07/25/05 07/25/05 014B
    AdditTG 0003 appl BfLn 08/09/05 08/09/05 0043
    AddItVault 0047 appl Bmsy 08/15/05 08/15/05 0143
    Tutorial 0001 appl HsTM 06/20/05 08/24/05 0043
    Solitaire 0001 appl Pat2 07/28/05 07/28/05 0143
    SplashPhoto 0001 appl SpPh 08/03/05 08/03/05 0043
    Expense 0002 appl exps 08/23/05 08/23/05 004B
    ScientificCalc 0001 appl sciC 03/14/05 03/14/05 004B
    Carbs 0001 appm BfLn 07/06/05 07/06/05 0143
    AS_FirstAid 0001 appm BfLn 06/20/05 08/05/05 0043
    AS_Knowledge 0004 appm BfLn 07/19/05 07/19/05 0143
    BFViewer 018C appm BfVr 09/07/05 09/07/05 004B
    ContactsBDIndex-PAdd 0000 bday PAdd 10/23/07 10/23/07 0100
    SPVolumeCache-SpPh.dat 0000 cach SpPh 10/23/07 10/23/07 0000
    AddressCitiesDB 0000 city addr 10/23/07 10/23/07 0108
    AddressCompaniesDB 0000 cmpy addr 10/23/07 10/23/07 0108
    AddressCountriesDB 0000 cnty addr 10/23/07 10/23/07 0108
    CalendarLocationsDB-PDat 0000 lcns PDat 10/23/07 10/23/07 0108
    ZLib 0001 libr ZLib 03/07/03 03/07/03 0043
    psysLaunchDB 0001 lnch psys 10/23/07 10/23/07 0068
    Graffiti ShortCuts 0001 macr graf 06/15/01 10/23/07 0009
    NVInfo-psys 0000 nvif psys 10/23/07 10/23/07 0001
    CHESS_enUS 0002 ovly BfCh 08/15/05 08/15/05 0843
    CheckSplit_enUS 0003 ovly BfCs 07/25/05 07/25/05 094B
    AddItVault_enUS 0047 ovly Bmsy 08/15/05 08/15/05 0943
    Tutorial_enUS 0001 ovly HsTM 06/20/05 08/24/05 0843
    Solitaire_enUS 0001 ovly Pat2 07/28/05 09/07/05 0843
    SplashPhoto_enUS 0001 ovly SpPh 08/22/05 08/22/05 0843
    Expense_enUS 0002 ovly exps 08/23/05 08/23/05 084B
    ScientificCalc_enUS 0001 ovly sciC 03/14/05 03/14/05 084B
    Unsaved Preferences 0000 pref psys 10/23/07 10/23/07 0001
    Net Prefs 0000 rsrc netl 10/23/07 10/23/07 0001
    System MIDI Sounds 0001 smfr psys 10/23/07 10/23/07 0008
    Saved Preferences 0000 sprf psys 10/23/07 10/23/07 0009
    AddressStatesDB 0000 stat addr 10/23/07 10/23/07 0108
    BGCache-PDat 0000 strm PDat 10/23/07 10/23/07 0080
    BGCache-lnch 0000 strm lnch 10/23/07 10/23/07 0080
    AddressTitlesDB 0000 titl addr 10/23/07 10/23/07 0108
    Loading “Conflict Notifier”
    Notifier 'Conduit Conflict Notifier' version 1.0.0
    Notifier Conduit Conflict Notifier OK
    Loading “Install Conduit”
    Conduit “Install” version 3.0.0
    Sync type is Fast
    Installed ADD051SData
    Installed ADD051VData
    Installed CalendarLocationsDB-PDat
    Installed ConnectionMgr50DB
    Installed Graffiti ShortCuts
    Installed locLCusLocationDB
    Installed locLDefLocationDB
    Installed psysLaunchDB
    Installed Queries
    Installed Saved Preferences
    Installed System MIDI Sounds
    OK Install
    Loading “Apple”
    Conduit “iSync Conduit” version 3.0.0
    Sync type is Fast
    iSync Conduit starting 10/23/07 22:19:52
    Setting Hello Response, type is PalmSyncTypeReset, language is 0 (BladeLanguageEnglish) 10/23/07 22:19:59
    Warning: SyncCloseDB returned 16385 for database DatebookDB 10/23/07 23:35:28
    Warning:SyncOpenDB returned 16385 for database ToDoDB, cannot process request 10/23/07 23:35:50
    Warning: couldn't open requested database for add record request for id 0 and creator 746f646f 10/23/07 23:35:50
    iSync Conduit: Sending Error Response 7: iSync Conduit: Error occured adding record 10/23/07 23:35:50
    OK iSync Conduit
    HotSync Canceled 10/23/07 23:38:40
    -------------------------------------------------------------------------------- --

    Michael, thanks for your prompt reply, and for pointing me to that thread. to make my long story short:
    1) i went into hotsync conduit manager and set ALL of them to "do nothing" except for isync (set to enable isync for this device), backup (set to backup) and install (set to install files)
    2) did a hard reset of the palm device
    unfortunately sync failed again, here is the tail end of the hotsync log:
    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    Loading “Conflict Notifier”
    Notifier 'Conduit Conflict Notifier' version 1.0.0
    Notifier Conduit Conflict Notifier OK
    Loading “Install Conduit”
    Conduit “Install” version 3.0.0
    Sync type is Install/Restore
    OK Install
    Loading “Apple”
    Conduit “iSync Conduit” version 3.0.0
    Sync type is Slow
    iSync Conduit starting 10/24/07 17:19:00
    Setting Hello Response, type is PalmSyncTypeReset, language is 0 (BladeLanguageEnglish) 10/24/07 17:19:06
    Warning: SyncCloseDB returned 16385 for database DatebookDB 10/24/07 18:29:51
    Warning:SyncOpenDB returned 16401 for database ToDoDB, cannot process request 10/24/07 18:30:25
    Warning: couldn't open requested database for add record request for id 0 and creator 746f646f 10/24/07 18:30:25
    iSync Conduit: Sending Error Response 7: iSync Conduit: Error occured adding record 10/24/07 18:30:25
    OK iSync Conduit
    HotSync Canceled 10/24/07 19:16:02
    -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    again though, it does look like all the ical and address book data did in fact make it onto the palm device, but the sync just dies at the end. i don't think the ical size is the problem, same stats as in my original message, 19.5M of 24.6M free on the palm.
    somewhere in my many sync / reset / sync / reset attempts, my /HD/Library/Application Support/Palm HotSync/Conduits folder got empty. so i can't follow your advice of moving conduits to the disabled folder, because neither the conduits nor the disabled folder even exist anymore! is that of any concern?

  • A110 memory modules

    TOSHIBA EQUIUM A110 PSAB2E-008006AV.
    I have just replaced two memory modules both 516 mb with a 2gb module. Everything works fine. However, I have heard varying comments about maximum memory; I have been told that the maximum is 2gb, but I have heard elsewhere, that the laptop will take 3gb; if this is so, can I reinsert one of the 516 modules.

    Max 4gig total.  2gig max per slot.  If you are running a 32bit OS then your effective limit is 3gig.  You can use one of the 512meg sticks with the 2gig stick as long as the 2gig is within spec (some of the cheaper ones aren't).
    If you don't post your COMPLETE model number it's very difficult to assist you. Please try to post in complete sentences with punctuation, capitals, and correct spelling. Toshiba does NOT provide any direct support in these forums. All support is User to User in their spare time.

  • Calling Z function module from BSP page

    hi,
      i am calling a z function module from BSP application ROS_SELF_REG ,The z function module is inside a z function group,It does not give any sytnax error..but while running BSP application ,it is going into dump saying that Z function module is not found..Any idea why this is happening???

    Hi,
    Check whether the Z function module is spelled correctly. Also try activating the whole function group and function module in se80 transaction.
    Check whether the BSP application is calling the Z FM from the correct server/client where it is available.
    Regards,
    Harish

  • Showing error in read_text function module

    - Forcast ID Number: Read function module “READ_TEXT” where ID = Z001, Object = VBBK to get the Forcast ID. Display it on the output.
    CALL FUNCTION 'READ_TEXT'
          EXPORTING
          CLIENT                        = SY-MANDT
            ID                            = 'Z001'
            LANGUAGE                      =
            NAME                          =
            OBJECT                        = 'VBBK'
          ARCHIVE_HANDLE                = 0
          LOCAL_CAT                     = ' '
        IMPORTING
          HEADER                        =
          TABLES
            LINES                         =
        EXCEPTIONS
          ID                            = 1
          LANGUAGE                      = 2
          NAME                          = 3
          NOT_FOUND                     = 4
          OBJECT                        = 5
          REFERENCE_CHECK               = 6
          WRONG_ACCESS_TO_ARCHIVE       = 7
          OTHERS                        = 8
        IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
    its showing error---unable to interprete OBJECT.possible cases of spelling or comma error

    Look at the Bold ones ...  U need to give values for
    language and name
    CALL FUNCTION 'READ_TEXT'
    EXPORTING
    CLIENT = SY-MANDT
    ID = 'Z001'
    LANGUAGE = ' '
    NAME = ' '
    OBJECT = 'VBBK'
    ARCHIVE_HANDLE = 0
    LOCAL_CAT = ' '
    IMPORTING
    HEADER =
    TABLES
    LINES =
    EXCEPTIONS
    ID = 1
    LANGUAGE = 2
    NAME = 3
    NOT_FOUND = 4
    OBJECT = 5
    REFERENCE_CHECK = 6
    WRONG_ACCESS_TO_ARCHIVE = 7
    OTHERS = 8
    IF SY-SUBRC 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

  • What are the Infotypes required for integrating Payroll for Latin America?

    Hi,
    Can anyone tell me the Country Specific Infotypes for Implementing Payroll for Latin America? Also Please let me know the Infotypes required for integrating FI & CO modules with Payroll.

    Hi,
    Can anyone tell me the Country Specific Infotypes for Implementing Payroll for Latin America? Also Please let me know the Infotypes required for integrating FI & CO modules with Payroll. Also I need to implement the Payroll for Latin America including ESS and MSS. How do I Integrate?
    Regards,
    Kavitha

  • Adapter module Transform.Class error

    Hello,
    I have a sender jdbc adapter which is calling the xslt transform class with no errors but its obvious that the xsl is not being invoked as my xml is not transformed, but I don't see any error in the audit log.  When I purposely use a non existent file path/file name in XSLTConversion.XSLTFileName I expect to get an error in the message monitor audit log but I do not.  Neither default.trace or xi.*.log provide any errors regarding the xslt transformation in the adapter module.  The audit log actually indicates: "Transform: successfully transformed"  Below is my adapter module configuration.  Can anyone point me to a log file that might contain adapter module errors or notice any problem with this module config?
    localejbs/AF_Modules/MessageTransformBean, Local, XSLT
    CallSapAdapter, Local, call_AF_MS
    XSLT, Transform.class, com.sap.aii.messaging.adapter.XSLTConversion
    XSLT, XSLTConversion.XSLTFileName, /usr/sap/XIS/DVEBMGS00/j2ee/cluster/server0/tmgxsls/GL_split.xsl
    Thanks in advance,
    Dave

    Hi
    Check for correct spelling:
    localejbs/AF_modules/MessageTransformBean
    Check the parameters for trailing spaces:
    'com.sap.aii.messaging.adapter.XSLTConversion_'
    Check the path:
    Windows: C:\...
    Unix: /usr/...
    and
    Check the adit log of the message monitoring in the RWB for entries according to the module....
    Trc or trace files on visual administrator is the closest answer from my part.
    please refer,
    /people/michal.krawczyk2/blog/2005/09/07/xi-why-dont-start-searching-for-all-errors-from-one-place
    regards,
    vasanth

  • Error in Adapter module

    Dear Experts,
    I have created EAR file using the NWDS tool.( the blog: " How to Create Modules fot the J2EE Adapter Engine".)
    I have also deployed the EAR file usinf Visual Administrator.
    When I am sending the files to a folder then the error is coming as "Exception caught with cause com.sap.engine.services.jndi.persistent.exceptions.NameNotFoundException: Path to object does not exist at localebjs, the whole lookup name is localebjs/CreateAttachment.
    Attempt to process file failed with com.sap.engine.services.jndi.persistent.exceptions.NameNotFoundException: Path to object does not exist at localebjs, the whole lookup name is localebjs/CreateAttachment."
    Kindly help me.
    Thanks in advance.

    Check ejb-j2ee-engine.xml file for the Whats the EJB name and JNDI name any spelling mistakes can also create this error.
    Hi,
    Both the EJB name and JNDI name is same.
    In JAVA, the code is like this..
    @ejbHome <{com.sap.aii.af.mp.module.ModuleHome}>
    @ejbLocal <{com.sap.aii.af.mp.module.ModuleLocal}>
    @ejbLocalHome <{com.sap.aii.af.mp.module.ModuleLocalHome}>
    @ejbRemote <{com.sap.aii.af.mp.module.ModuleRemote}>
    @stateless
    and ejb-j2ee-engine as
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ejb-j2ee-engine SYSTEM "ejb-j2ee-engine.dtd">
    <ejb-j2ee-engine>
         <enterprise-beans>
              <enterprise-bean>
                   <ejb-name>CreateAttachment</ejb-name>
                   <jndi-name>CreateAttachment</jndi-name>
                   <session-props/>
              </enterprise-bean>
              <enterprise-bean>
                   <ejb-name>AdapterModuleBean</ejb-name>
                   <session-props/>
              </enterprise-bean>
         </enterprise-beans>
    </ejb-j2ee-engine>
    Kindly help me.
    pls, tell me where should I check the error.
    Edited by: Amit Mandal on Oct 23, 2008 8:55 AM

  • Module Function Name Resolution - Issues with DefaultCommandPrefix

    Just getting started on module development, running PS4, and I've run into an... inconsistency... that I'm trying to understand. I've got two test functions, Get-Something and Set-Something in a script module. In my manifest file I specify a DefaultCommandPrefix
    of 'Test'.
    My issue is the function name resolution doesn't result in an executable result if you leave PowerShell up to it's own process.
    To begin with I closed all sessions and deleted all files in the CommandAnalysis directory. After starting a session I waited for the CommandAnalysis cache to populate. Then I ran a series of test commands to illustrate how, most of the time, the function
    name PowerShell registers with tab completion can't be executed because it lacks the 'Test' prefix. Even worse, much of the time tab completion won't recognize the correct (i.e., with prefix) name of the function and honor tab completion for it.
    Having just learned of the CommandAnalysis cache I assumed I would see it change as PowerShell 'learned' more about the module because the name resolves differently over time. I've included three files at the end of this post, the module code (ModuleTest.psm1),
    the manifest (ModuleTest.psd1) and the capture of output to the PowerShell session (ModuleTest.txt). I've tried to include the times I used <tab> and <ret> for tab completion and execution as well as (comments in parenthesis for things I did like
    starting a new session and checking the CommandAnalysis cache for changes).
    An example is, when first starting a session typing 'get-som<tab>' will resolve to 'Get-Something' (prefix 'Test' missing) and typing 'get-test<tab>' won't resolve to 'Get-TestSomething'. Try to execute the 'Get-Something' from tab completion
    and you'll get the 'name not recognized, blah, blah'.
    Now if you type 'get-som<tab>' PowerShell will resolve to 'ModuleTest\Get-Something' - looks promising... but no.  Try to execute the 'ModuleTest\Get-Something' from tab completion and you'll still get the 'name not recognized, blah, blah'.
    Even though the same key strokes resolved differently there were no changes made to the CommandAnalysis cache so I'm lost on why it produces two different (though equally useless) results.
    Manually importing the module and sometimes running Get-Command -Module ModuleTest will make tab completion of the function names behave correctly. Is this a known issue with using DefaultCommandPrefix in script modules or is there something I need to include
    in the manifest to enforce strict name recognition (including the prefix)?
    <ModuleTest.psm1>
    function Get-Something
     Write-Host "Get-Something Executed"
    function Set-Something
     Write-Host "Set-Something Executed"
    <ModuleTest.psd1>
    # Script module or binary module file associated with this manifest
    ModuleToProcess = 'ModuleTest.psm1'
    # Version number of this module.
    ModuleVersion = '1.0.0.0'
    # ID used to uniquely identify this module
    GUID = '241877ff-64be-40c8-a603-8d5acf7a48d8'
    # Author of this module
    Author = 'wb3'
    # Company or vendor of this module
    CompanyName = ''
    # Copyright statement for this module
    Copyright = '(c) 2015. All rights reserved.'
    # Description of the functionality provided by this module
    Description = 'Module description'
    # Minimum version of the Windows PowerShell engine required by this module
    PowerShellVersion = '2.0'
    # Name of the Windows PowerShell host required by this module
    PowerShellHostName = ''
    # Minimum version of the Windows PowerShell host required by this module
    PowerShellHostVersion = ''
    # Minimum version of the .NET Framework required by this module
    DotNetFrameworkVersion = '2.0'
    # Minimum version of the common language runtime (CLR) required by this module
    CLRVersion = '2.0.50727'
    # Processor architecture (None, X86, Amd64, IA64) required by this module
    ProcessorArchitecture = 'None'
    # Modules that must be imported into the global environment prior to importing
    # this module
    RequiredModules = @()
    # Assemblies that must be loaded prior to importing this module
    RequiredAssemblies = @()
    # Script files (.ps1) that are run in the caller's environment prior to
    # importing this module
    ScriptsToProcess = @()
    # Type files (.ps1xml) to be loaded when importing this module
    TypesToProcess = @()
    # Format files (.ps1xml) to be loaded when importing this module
    FormatsToProcess = @()
    # Modules to import as nested modules of the module specified in
    # ModuleToProcess
    NestedModules = @()
    # Default command prefix
    DefaultCommandPrefix = 'Test'
    # Functions to export from this module
    FunctionsToExport = '*'
    # Cmdlets to export from this module
    CmdletsToExport = '*'
    # Variables to export from this module
    VariablesToExport = '*'
    # Aliases to export from this module
    AliasesToExport = '*'
    # List of all modules packaged with this module
    ModuleList = @()
    # List of all files packaged with this module
    FileList = @()
    # Private data to pass to the module specified in ModuleToProcess
    PrivateData = ''
    <ModuleTest.output>
    PS C:\Scripts\PowerShell> Get-ChildItem -Path 'C:\Program Files\WindowsPowerShell\Modules' -Recurse<ret>
        Directory: C:\Program Files\WindowsPowerShell\Modules
    Mode                LastWriteTime     Length Name
    d----          3/5/2015   9:06 AM            ModuleTest
        Directory: C:\Program Files\WindowsPowerShell\Modules\ModuleTest
    Mode                LastWriteTime     Length Name
    -a---          3/5/2015   8:50 AM       2907 ModuleTest.psd1
    -a---          3/5/2015   9:01 AM        140 ModuleTest.psm1
    PS C:\Scripts\PowerShell> Get-Module -ListAvailable<ret>
        Directory: C:\Program Files\WindowsPowerShell\Modules
    ModuleType Version    Name                                ExportedCommands
    Script     1.0.0.0    ModuleTest                          {Get-Something, Set-Something}
    PS C:\Scripts\PowerShell> get-som<tab>
    PS C:\Scripts\PowerShell> Get-Something<ret>
    Get-Something : The term 'Get-Something' is not recognized as the name of a cmdlet, function, script file, or operable
    program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At line:1 char:1
    + Get-Something
    + ~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (Get-Something:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
    (No change in CommandAnalysis cache)
    PS C:\Scripts\PowerShell> get-som<tab>
    PS C:\Scripts\PowerShell> ModuleTest\Get-Something<ret>
    ModuleTest\Get-Something : The term 'ModuleTest\Get-Something' is not recognized as the name of a cmdlet, function,
    script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is
    correct and try again.
    At line:1 char:1
    + ModuleTest\Get-Something
    + ~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (ModuleTest\Get-Something:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
    (No change in CommandAnalysis cache)
    PS C:\Scripts\PowerShell> get-tes<tab>
    PS C:\Scripts\PowerShell> Get-TestSomething<ret>
    Get-Something Executed
    (New Session)
    (No change in CommandAnalysis cache)
    PS C:\Scripts\PowerShell> get-tes<tab><ret>
    get-tes : The term 'get-tes' is not recognized as the name of a cmdlet, function, script file, or operable program.
    Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At line:1 char:1
    + get-tes
    + ~~~~~~~
        + CategoryInfo          : ObjectNotFound: (get-tes:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
    PS C:\Scripts\PowerShell> Import-Module ModuleTest<ret>
    (No change in CommandAnalysis cache)
    PS C:\Scripts\PowerShell> get-tes<tab><ret>
    PS C:\Scripts\PowerShell> Get-TestSomething
    Get-Something Executed
    (New Session)
    (No change in CommandAnalysis cache)
    PS C:\Scripts\PowerShell> get-tes<tab><ret>
    get-tes : The term 'get-tes' is not recognized as the name of a cmdlet, function, script file, or operable program.
    Check the spelling of the name, or if a path was included, verify that the path is correct and try again.
    At line:1 char:1
    + get-tes
    + ~~~~~~~
        + CategoryInfo          : ObjectNotFound: (get-tes:String) [], CommandNotFoundException
        + FullyQualifiedErrorId : CommandNotFoundException
    PS C:\Scripts\PowerShell> Get-Command -Module ModuleTest<ret>
    CommandType     Name                                              
    ModuleName
    Function        Get-TestSomething                                 
    ModuleTest
    Function        Set-TestSomething                                 
    ModuleTest
    (No change in CommandAnalysis cache)
    PS C:\Scripts\PowerShell> get-tes<tab>
    PS C:\Scripts\PowerShell> Get-TestSomething<ret>
    Get-Something Executed
    PS C:\Scripts\PowerShell> moduletest\get<tab><ret>
    PS C:\Scripts\PowerShell> Get-TestSomething<ret>
    Get-Something Executed
    William Busby, PMP

    Hi William,
    yes, that's something you'll either have to do the hard way or live with admin confusion.
    If you're using Sapien's PowerShell Studio as an Editor (hint: Usually a great idea), you can very easily rename a function, even in a multi-file module project, by rightcklicking on the function-name and selecting "rename".
    Alternatively you can do a bulk rename with Powershell:
    Get all functions in your module (Load it and check exportedcommands)
    loop over each function-name
    calculate new name
    search your entire project for all references and replace them.
    Let me see ...
    function Rename-ModulePrefix
    [CmdletBinding()]
    Param (
    [Parameter(Position = 0, Mandatory = $true)]
    [string]
    $ModuleName,
    [Parameter(Position = 1, Mandatory = $true)]
    [string]
    $OldPrefix,
    [Parameter(Position = 2, Mandatory = $true)]
    [string]
    $NewPrefix,
    [Parameter(Position = 3)]
    [string]
    $Path
    # Catch all typos
    Import-Module $ModuleName -ErrorAction 'Stop'
    # Get root path if not manually passed
    if (-not $PSBoundParameters["Path"])
    $Path = (Get-Module $ModuleName).Path
    # Get module files
    $Files = Get-ChildItem -Path $path -Recurse -Include "*.ps1", "*.psm1", "*.psd1"
    # Iterate over each file
    foreach ($file in $Files)
    # Null variable in case you get an empty file somewhere and run this from Win 7
    $data = $null
    # Get Content of file
    $data = Get-Content $file
    # Replace strings
    foreach ($c in (Get-Module $ModuleName).ExportedCommands)
    $newName = $c.Name -replace $OldPrefix, $NewPrefix
    $data = $data | ForEach-Object { $_ -replace $c.Name, $newName }
    # Write back to file
    $data | Set-Content $file
    While I didn't proof it, in theory this should do it (Make a backup before running it :) ).
    Cheers,
    Fred
    There's no place like 127.0.0.1

  • SOAP adapter Module Issue

    Hi,
    i had configured a JDBC to SOAP scenario and the SOAP adapter has the Module (localejbs/ReplaceXMLTag)
    now the issue is while execute teh scenario, it works fine at DEV but shows error at QA as given below
    "Delivery exception: Object not found in Lookup of Replace XML tag"
    please let me know how to resolve this issue.
    Thanks in advance....

    > i had configured a JDBC to SOAP scenario and the SOAP adapter has the Module (localejbs/ReplaceXMLTag)
    > "Delivery exception: Object not found in Lookup of Replace XML tag"
    Have you spelled this correct? The name in the error message seems to be different from th module name.

  • Function Module for search help Exit

    How to create a function Module for search help exits?
    please explain in details with step by step process.

    Hi,
    How to create a function Module for search help exits?
    function module for search help F4IF_SHLP_EXIT_EXAMPLE
    dynamic search help use 'F4IF_INT_TABLE_VALUE_REQUEST'
    please check out the link below it will help you
    A repository object maintained in the ABAP Dictionary. It supplies input fields on Dynpros with single- or multi-column input helps. Search helps can be linked in the Dictionary with components from structures, data elements, and check tables. A search help enables you to search for entry values with assigned data, without you having to know the exact spelling of the value.
    http://help.sap.com/saphelp_46c/helpdata/EN/cf/21ee52446011d189700000e8322d00/content.htm
    please explain in details with step by step process.
    create a search help exit:
    1. create an fm with this interface:
    *" TABLES
    *" SHLP_TAB TYPE SHLP_DESCR_TAB_T
    *" RECORD_TAB STRUCTURE SEAHLPRES
    *" CHANGING
    *" VALUE(SHLP) TYPE SHLP_DESCR_T
    *" VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
    put this logic in it:
    Delete duplicate filter logic.
    This logic only needs to apply at the 'DISP' event - which is just
    before the hit list is displayed
    if callcontrol-step = 'DISP'.
    delete adjacent duplicates from record_tab.
    endif.
    2. edit your search help in se11 and enter the name of the above search help exit fm
    check this sample code..for dynamic search help
    REPORT  ZTEST_F4HELP                              .
    *---Report with selection screen and to display the list of
    possible entries for field 'B' as per the value in field 'A'.
    parameters: p_vbeln type vbak-vbeln,
                p_posnr type vbap-posnr.
    at selection-screen on value-request for p_posnr.
      data: begin of help_item occurs 0,
              posnr type vbap-posnr,
              matnr type vbap-matnr,
              arktx type vbap-arktx,
            end of help_item.
      data: dynfields type table of dynpread with header line.
      dynfields-fieldname = 'P_VBELN'.
      append dynfields.
      call function 'DYNP_VALUES_READ'
           exporting
                dyname               = sy-cprog
                dynumb               = sy-dynnr
                translate_to_upper   = 'X'
           tables
                dynpfields           = dynfields
           exceptions
                invalid_abapworkarea = 1
                invalid_dynprofield  = 2
                invalid_dynproname   = 3
                invalid_dynpronummer = 4
                invalid_request      = 5
                no_fielddescription  = 6
                invalid_parameter    = 7
                undefind_error       = 8
                double_conversion    = 9
                stepl_not_found      = 10
                others               = 11.
      read table dynfields with key fieldname = 'P_VBELN'.
      p_vbeln = dynfields-fieldvalue.
      call function 'CONVERSION_EXIT_ALPHA_INPUT'
           exporting
                input  = p_vbeln
           importing
                output = p_vbeln.
      select posnr matnr arktx into table help_item
                     from vbap
                          where vbeln = p_vbeln.
      call function 'F4IF_INT_TABLE_VALUE_REQUEST'
           exporting
                retfield    = 'POSNR'
                dynprofield = 'P_POSNR'
                dynpprog    = sy-cprog
                dynpnr      = sy-dynnr
                value_org   = 'S'
           tables
                value_tab   = help_item.
    also check this link it will help you
    /message/3854825#3854825 [original link is broken]
    *********please reward points if the information is helpful to you*************

  • Function Module to convert  amount to  amount in words

    Dear Guru ,
    I want to know is there any sap standard Function Module to convert  amount value   to  amount in words
    Thanks & Regards

    Hi..
    Use FM SPELL_AMOUNT.
    This function module converts an amount or number into words. It can be used as follows:
    Convert a number into words
    To do this, the transfer parameters LANGUAGE and AMOUNT have to be entered.
    Convert an amount into words
    To do this, the fields LANGUAGE, CURRENCY, and AMOUNT have to be entered.
    Program RF_SPELL contains a sample call of the function module. You can use it for test purposes.
    REPORT ZSPELL.
    TABLES SPELL.
    DATA : T_SPELL LIKE SPELL OCCURS 0 WITH HEADER LINE.
    DATA : PAMOUNT LIKE SPELL-NUMBER  VALUE '1234510'.
    SY-TITLE = 'SPELLING NUMBER'.
    PERFORM SPELL_AMOUNT USING PAMOUNT 'USD'.
    WRITE: 'NUMBERS', T_SPELL-WORD, 'DECIMALS ', T_SPELL-DECWORD.
    FORM SPELL_AMOUNT USING PWRBTR PWAERS.
      CALL FUNCTION 'SPELL_AMOUNT'
           EXPORTING
                AMOUNT    = PAMOUNT
                CURRENCY  = PWAERS
                FILLER    = SPACE
                LANGUAGE  = 'E'
           IMPORTING
                IN_WORDS  = T_SPELL
           EXCEPTIONS
                NOT_FOUND = 1
                TOO_LARGE = 2
                OTHERS    = 3.
    ENDFORM.                               " SPELL_AMOUNT
    I hope it helps.
    Reward pts if helpful
    Regards
    - Rishika Bawa

  • Firefox does not show numbers in arabic format when the windows regional settings is set to arabic, instead it shows numbers in latin characters

    when switching windows regional settings to Arabic, numbers are still shown in Latin characters, unlike other browsers (ex IE).
    == This happened ==
    Every time Firefox opened
    == all firefox versions

    See "bidi.numeral" in http://kb.mozillazine.org/About:config_entries#Bidi.
    See also http://mxr.mozilla.org/mozilla1.9.2/source/modules/libpref/src/init/all.js#1058
    To open the ''about:config'' page, type '''about:config''' in the location (address) bar and press the Enter key, just like you type the url of a website to open a website.
    If you see a warning then you can confirm that you want to access that page.

  • [python] setting a variable in a loaded module from the main script

    Hi,
    I have have two python scripts, one generally controlling my desktop wallpaper, the other downloads the APOD picture from the net and sets it as my wallpaper.
    At the moment I can get the wallpaper script to load the apod script as a module to use its functionality.
    The problem comes when I try to get the module to recognise variables set from the parent script:
    I have both scripts using the variable  'verbose' to control how much output is printed, (which can be set from the command line options).
    How do I get the 'verbose' variable in the imported module to be the same as the variable set by the script?
    I can get it into an imported function using a keyword assignment when called, 'download(verbose=options.verbose)', but this is forgotten when other functions are called.
    I have also tried making it a global variable.
    I assume it is because I am importing the module and setting the default value before the main script sets its value, but I cant see a way round this.
    Any ideas?
    Many thanks,
    Drew

    simplicity:
    test1.py
    #!/usr/bin/python3
    __version__ = 1
    from optparse import OptionParser, OptionGroup, SUPPRESS_HELP
    import test2
    def_msg = 3
    def function1(msg=def_msg):
    print('1 message level here is {0}' .format(msg))
    def function2():
    print('2 message level here is {0}' .format(msg))
    def function3(msg=def_msg):
    msg = def_msg
    print('3 message level here is {0}' .format(msg))
    def function4():
    print('4 message level here is {0}' .format(msg))
    def main(msg=def_msg):
    print('m message level here is {0}' .format(msg))
    function1(msg=msg)
    function2()
    function3()
    function4()
    test2.main(msg=msg)
    function2()
    if __name__ == "__main__":
    parser = OptionParser(usage = "usage: %prog [options] command", version="%prog {0}" .format(__version__),
    description = "Test script 1.")
    parser.set_defaults()
    standard = OptionGroup(parser, "Standard Options")
    ## Standard Options
    standard.add_option("-q", "--quiet",
    action="store_true", dest="quiet", default=False, #help=SUPPRESS_HELP)
    help="only display warnings and errors")
    standard.add_option("-v", "--verbose",
    action="store_true", dest="verbose", default=False, #help=SUPPRESS_HELP)
    help="display all output")
    standard.add_option("--debug",
    action="store_true", dest="debug", default=False, #help=SUPPRESS_HELP)
    help="debug mode: detailed output of commands")
    standard.add_option("--really-quiet",
    action="store_true", dest="reallyquiet", default=False, help=SUPPRESS_HELP)
    #help="only display errors")
    standard.add_option("--silent",
    action="store_true", dest="silent", default=False, help=SUPPRESS_HELP)
    #help="don't display any output")
    parser.add_option_group(standard)
    (options, args) = parser.parse_args()
    ## message level
    if options.debug == True:
    msg = 5
    elif options.verbose == True:
    msg = 4
    elif options.quiet == True:
    msg = 2
    elif options.reallyquiet == True:
    msg = 1
    elif options.silent == True:
    msg = 0
    else:
    msg = 3
    main(msg=msg)
    test2.py
    #!/usr/bin/python3
    __version__ = 1
    from optparse import OptionParser, OptionGroup, SUPPRESS_HELP
    #from test1 import msg
    def_msg = 3
    #msg = 3
    def function1(msg=def_msg):
    print('1 message level here is {0}' .format(msg))
    def function2(msg=def_msg):
    print('2 message level here is {0}' .format(msg))
    def function3():
    print('3 message level here is {0}' .format(msg))
    def main(msg=def_msg):
    #from test1 import msg
    #import test1
    #msg = test1.msg
    print('m message level here is {0}' .format(msg))
    function1(msg=msg)
    function2()
    function3()
    if __name__ == "__main__":
    parser = OptionParser(usage = "usage: %prog [options] command", version="%prog {0}" .format(__version__),
    description = "Test script 2.")
    parser.set_defaults()
    standard = OptionGroup(parser, "Standard Options")
    ## Standard Options
    standard.add_option("-q", "--quiet",
    action="store_true", dest="quiet", default=False, #help=SUPPRESS_HELP)
    help="only display warnings and errors")
    standard.add_option("-v", "--verbose",
    action="store_true", dest="verbose", default=False, #help=SUPPRESS_HELP)
    help="display all output")
    standard.add_option("--debug",
    action="store_true", dest="debug", default=False, #help=SUPPRESS_HELP)
    help="debug mode: detailed output of commands")
    standard.add_option("--really-quiet",
    action="store_true", dest="reallyquiet", default=False, help=SUPPRESS_HELP)
    #help="only display errors")
    standard.add_option("--silent",
    action="store_true", dest="silent", default=False, help=SUPPRESS_HELP)
    #help="don't display any output")
    parser.add_option_group(standard)
    (options, args) = parser.parse_args()
    ## message level
    if options.debug == True:
    msg = 5
    elif options.verbose == True:
    msg = 4
    elif options.quiet == True:
    msg = 2
    elif options.reallyquiet == True:
    msg = 1
    elif options.silent == True:
    msg = 0
    else:
    msg = 3
    main(msg=msg)
    else:
    msg = def_msg
    I think I understand why it gives the results it does when run as 'test1.py -v'
    I was just wondering if there was an easier way to get the second script to take and remember the variable without having to write variable=value into the function call every single time? However this is the only way I have found so far.
    The actual code:
    wallpaper.py:
    #!/usr/bin/python3
    #Filename: wallpaper.py
    __version__ = '6.2.0'
    import os, sys
    from optparse import OptionParser, OptionGroup, SUPPRESS_HELP
    #import warnings
    import random
    #import apod
    ##### CONFIG #####
    ## Global Variables
    root = '/home/wallpaper'
    feh_wallpaper_file = os.path.expanduser('~/.fehbg')
    filter_file = os.path.expanduser('~/.config/openbox/wallpaper/mask')
    config_path = os.path.expanduser('~/.config/openbox/wallpaper')
    list_default = 'default-list'
    list_alt = 'alt-list'
    menu_default = 'menu-folders'
    menu_alt = 'alt-menu'
    lockfile='/tmp/wallpaper.lock'
    valid_list_list = 'alt-list', 'default-list'
    def_msg = 3
    ##### LOCK v2.2 #####
    def LockScript(fun, lock=lockfile, msg=def_msg):
    """Locks the script before starting a function."""
    if msg >= 5:
    print('Lock :: Locking Script')
    from os import O_CREAT, O_EXCL
    try:
    fd = os.open(lock, O_CREAT+O_EXCL)
    if msg >= 5:
    print('Lock :: created lock file')
    except OSError:
    if msg >= 1:
    print('Error :: Already running function {0}...' .format(fun))
    sys.exit(1)
    try:
    fun(msg=msg)
    finally:
    try:
    os.remove(lock)
    if msg >= 6:
    print('Lock :: Removed Lock File')
    except:
    if msg >= 1:
    print('Lock :: Error :: Lockfile missing')
    ##### CURRENT INFO #####
    def get_filter(msg=def_msg):
    """Retrieves the filter."""
    f = open(filter_file, 'r')
    i = f.read()
    f.close()
    if msg >= 6:
    print('Got Filter :: {0}' .format(i))
    return i
    def get_info(msg=def_msg):
    """Returns the path and name of the current wallpaper."""
    with open(feh_wallpaper_file, 'r') as f:
    a = f.read()
    b = a[15:-1]
    f.close()
    name = os.path.basename(b)
    try:
    import apod
    if name == 'apod':
    path = os.path.join(apod.archive_folder, apod.thisyear)
    w = os.listdir(path)
    w.sort()
    wnum = len(w) -1
    name = w[wnum]
    else:
    path = os.path.dirname(b)
    except:
    path = os.path.dirname(b)
    if msg >= 5:
    print('current wallpaper :: {0} {1}' .format(path, name))
    return path, name
    def get_next(c, z, msg=def_msg):
    """Gets the next number in the sequence of length z."""
    if c == (len(z) - 1):
    n = 0
    else:
    n = c + 1
    if msg >= 6:
    print('next number is {0}' .format(n))
    return n
    def get_prev(c, z, msg=def_msg):
    """Gets the previous number in the sequence of length z."""
    if c == 0:
    p = (len(z) - 1)
    else:
    p = c - 1
    if msg >= 6:
    print('previous number is {0}' .format(p))
    return p
    def current_wallpaper_info(msg=def_msg):
    """Print the details of the current wallpaper."""
    name = get_info(msg=msg)[1]
    path = get_info(msg=msg)[0]
    folder = os.path.basename(path)
    mask = get_filter(msg=msg)
    try:
    import apod
    if path.startswith(apod.archive_folder) or name.startswith('APOD'):
    title = apod.get_name(fname=name, msg=msg)
    print('currently the wallpaper is "{0}", {1}' .format(title, name))
    elif not mask == '':
    print('currently the wallpaper is {0} from folder {1} using mask {2}' .format(name, folder, mask))
    else:
    print('currently the wallpaper is {0} from folder {1}' .format(name, folder))
    except:
    print('currently the wallpaper is {0} from folder {1}' .format(name, folder))
    ##### SET WALLPAPER FUNCTIONS #####
    def set_filter(i=None, msg=def_msg, mask_file=filter_file):
    """Sets the filter."""
    if test:
    f = open(mask_file, 'r')
    else:
    f = open(mask_file, 'w')
    if i == None:
    if msg >= 5:
    print('clearing filter')
    if test:
    print('exec :: Clear filter')
    else:
    f.write('')
    else:
    if msg >= 4:
    print('Setting filter as "{0}"' .format(i))
    if test:
    print('exec :: Writing filter as :: "{0}"' .format(i))
    else:
    f.write(i)
    f.close()
    def set_wallpaper(name, path_in=get_info()[0], msg=def_msg):
    """Set the wallpaper."""
    spath = path_in.split(':')
    path = spath[0]
    try:
    mask = spath[1]
    set_filter(mask, msg=msg)
    except:
    pass
    full = os.path.join(path, name)
    if msg >= 4:
    print("setting {0} as wallpaper" .format(name))
    if test:
    print("exec :: feh --bg-scale {0}" .format(full))
    else:
    os.system("feh --bg-scale {0}" .format(full))
    #def set_default(d=default_file):
    # """Sets the default walllpaper."""
    # set_wallpaper(d[1], d[0])
    def set_wallpaper_last(msg=def_msg):
    """Set the wallpaper as the last image."""
    ## alternativly use "eval `cat ~/.fehbg`"
    full = os.path.join(get_info()[0], get_info()[1])
    if msg >= 4:
    print("setting {0} as wallpaper" .format(full))
    if test:
    print("exec :: feh --bg-scale {0}" .format(full))
    else:
    os.system("feh --bg-scale {0}" .format(full))
    def change_folder(folder0, mask=None, msg=def_msg):
    """Change Wallpaper folder (optional filter) relative from root dir."""
    folder_split = folder0.split(':')
    folder = folder_split[0]
    path = os.path.join(root, folder)
    if not os.path.exists(path): # Path does not exist
    if msg >= 1:
    print('Fatal Error :: path does not exist')
    print('avaliable folders are {0}' .format(avaliable_folders()))
    sys.exit()
    if msg >= 4:
    print('changing folder to {0}' .format(folder))
    f1 = os.listdir(path)
    try:
    if folder_split[1]:
    mask = folder_split[1]
    f2 = []
    for i in f1:
    if i.find(mask) > -1:
    f2.append(i)
    f = f2
    if len(f) == 0:
    if msg >= 2:
    print('Warning :: invalid filter')
    raise
    set_filter(mask, msg=msg)
    else: # print('null mask')
    if msg >= 2:
    print('Warning :: null filter')
    raise
    except:
    if msg >= 5:
    print('No filter used, clearing')
    set_filter(msg=msg)
    f = f1
    if len(f) == 0:
    if msg >= 1:
    print('Fatal Error :: no files in path')
    sys.exit()
    r = random.randrange(0,len(f))
    if msg >= 5:
    print('chosing random number:: {0}' .format(r))
    set_wallpaper(f[r], path, msg=msg)
    def avaliable_folders(r=root, msg=def_msg):
    """Returns a list of avaliable folders in the root wallpaper directory."""
    allfolders = os.listdir(r)
    folders = []
    for f in allfolders:
    if not f.startswith("."):
    folders.append(f)
    return folders
    ##### DEFAULT / ALT SEQUENCE LISTS #####
    def strip_opt(p):
    #q1 = p.replace(' ','')
    #q2 = q1.replace('\t','')
    #q3 = q2.replace('\n','')
    q = p.replace(' ','').replace('\t','').replace('\n','')
    return q
    def check_list(l, path=config_path, dl=list_default, al=list_alt, msg=def_msg, returnF=False):
    """Checks to see (and returns) valid path to list."""
    if l == 'default' or l == 'def' or l == None :
    if msg >= 4:
    print('using default list')
    return os.path.join(path, dl)
    elif l == 'alt':
    if msg >= 4:
    print('using alternative list')
    return os.path.join(path, al)
    else:
    try:
    if not os.path.exists(os.path.join(path, l)):
    if msg >= 1:
    print('Error :: list does not exist')
    raise
    elif not os.path.isfile(os.path.join(path, l)):
    if msg >= 1:
    print('Error :: list not a file')
    raise
    else:
    try:
    c = valid_list_list.index(l)
    if msg >= 6:
    print('list name has been validated')
    except:
    if msg >= 2:
    print('Warnimg :: list used has not been vaildated by script')
    print('Warnimg :: if valid; add to the list of valid lists')
    if msg >= 5:
    print('path exists')
    return os.path.join(path, l)
    except:
    if returnF == True:
    return False
    else:
    if msg >= 2:
    print('Warning :: using default list')
    return os.path.join(config_path, dl)
    def get_seq(msg=def_msg):
    """Returns the sequence of current wallpaper and curr position."""
    mask = get_filter(msg=msg)
    path = get_info(msg=msg)[0]
    name = get_info(msg=msg)[1]
    list1 = os.listdir(path)
    if mask == '':
    list0 = list1
    else:
    list2 = []
    for i in list1:
    if i.find(mask) > -1:
    list2.append(i)
    try: # check the filter is currently being used
    num = list2.index(name)
    #print('wallpaper in filtered list')
    list0 = list2
    except: # filter is out of date
    if msg >= 5:
    print('wallpaper not in filtered list... clearing')
    list0 = list1
    set_filter(msg=msg) # clear filter
    list0.sort()
    try: # needed if current wallpaper has been removed
    num = list0.index(name)
    if msg >= 5:
    print('current wallpaper info ::')
    print('name : {0}, number : {1}' .format(name, num))
    return num, list0
    except:
    if msg >= 1:
    print('Error :: get_seq :: Current wallpaper file missing :: name : {0}' .format(name))
    return 0, list0
    def list_sequence(com='next', seq=None, msg=def_msg):
    cname = get_info(msg=msg)[1]
    if seq == None:
    list_dir = get_info(msg=msg)[0]
    list_file = get_seq(msg=msg)[1]
    if msg >= 4:
    print('Changing wallpaper in sequence using current folder:mask')
    else:
    ## Build a list.
    a = check_list(seq, msg=msg)
    list_dir = []
    list_file = []
    with open(a, 'r') as f:
    for line in f:
    i = line.split(',')
    list_dir.append(os.path.join(root, strip_opt(i[0])))
    list_file.append(strip_opt(i[1]))
    set_filter(msg=msg) # flush mask if using a list
    if msg >= 4:
    print('Changing wallpaper in sequence using list file')
    try:
    c = list_file.index(cname)
    if msg >= 5:
    print('found current wallpaper in list at position {0}' .format(c))
    if com == 'random':
    n = random.randrange(0, len(list_file))
    if msg >= 4:
    print('setting random wallpaper from sequence')
    elif com == 'prev':
    n = get_prev(c, list_file)
    if msg >= 4:
    print('setting previous wallpaper in sequence')
    elif com == 'next':
    n = get_next(c, list_file)
    if msg >= 4:
    print('setting next wallpaper in sequence')
    elif com == 'first':
    if msg >= 4:
    print('setting first wallpaper in sequence')
    n = 0
    else:
    if msg >= 2:
    print('Warning :: Unknown commmand')
    n = 0
    except:
    if msg >= 4:
    print('Warning :: not found current wallpaper in list / folder')
    print('using first file in list / folder')
    n = 0
    if seq == None:
    set_wallpaper(list_file[n], list_dir, msg=msg)
    else:
    set_wallpaper(list_file[n], list_dir[n], msg=msg)
    def toggle_list(d='default', com='toggle', msg=def_msg):
    """Removes the current file from the list."""
    a = check_list(d, msg=msg)
    file_list = []
    mod_file = []
    cname = get_info(msg=msg)[1]
    cpath = get_info(msg=msg)[0]
    if os.path.dirname(cpath) == root:
    cdir = os.path.basename(cpath)
    elif os.path.dirname(os.path.dirname(cpath)) == root:
    cdir = os.path.join(os.path.basename(os.path.dirname(cpath)), os.path.basename(cpath))
    else:
    print('error')
    sys.exit()
    cmask = get_filter(msg=msg)
    if cmask == '':
    cdmask = cdir
    else:
    cdmask = '{0}:{1}' .format(cdir, cmask)
    in_list = False
    with open(a) as f:
    for line in f:
    i = line.split(',')
    if cname == strip_opt(i[1]):
    if msg >= 6:
    print('file in list')
    in_list = True
    else:
    if msg >= 6:
    print('file not in list')
    file_list.append(strip_opt(i[1]))
    mod_file.append('{0} , {1} \n' .format(strip_opt(i[0]), strip_opt(i[1])))
    if in_list and com != 'rmfile' :
    if msg >= 3:
    print('Removed file from list')
    if test:
    for j in mod_file:
    print('writing newline: {0}' .format(j))
    else:
    with open(a, 'w') as newf:
    for j in mod_file:
    newf.writelines(j)
    elif not in_list and com != 'addfile':
    mod_file.append('{0} , {1} \n' .format(cdmask, cname))
    if msg >= 3:
    print('Added wallpaper to list')
    if test:
    for j in mod_file:
    print('writing newline: {0}' .format(j))
    else:
    with open(a, 'w') as newf:
    for j in mod_file:
    newf.writelines(j)
    else:
    if com == 'addfile':
    if msg >= 2:
    print('Warning :: File already in list')
    elif com == 'rmfile':
    if msg >= 2:
    print('Warning :: File not in list')
    else:
    if msg >= 1:
    print('Error :: UNKNOWN :: TOG LIST FUNCTION')
    ##### OPENBOX MENU #####
    def gen_obmenu():
    import oblib
    for i in avaliable_folders():
    oblib.item(i, 'wallpaper.py --silent --change {0}' .format(i))
    def gen_obmenu_simple(name=None, i=None):
    import oblib
    if name == None:
    oblib.pipe_start()
    else:
    oblib.menu_start(name, i)
    oblib.item('Deafult', 'wallpaper.py --silent --default')
    oblib.sep()
    oblib.item('APOD', 'wallpaper.py --silent --apod')
    oblib.item('APOD Save', 'wallpaper.py --silent --apod-save')
    oblib.item('Random', 'wallpaper.py --silent --random')
    if name == None:
    oblib.pipe_end()
    else:
    oblib.menu_end()
    def gen_obmenu_standard():
    import oblib
    oblib.pipe_start()
    oblib.item('Deafult', 'wallpaper.py --silent --default')
    oblib.sep()
    oblib.item('APOD', 'wallpaper.py --silent --apod')
    oblib.item('APOD Save', 'wallpaper.py --silent --apod-save')
    oblib.sep()
    oblib.menu_start('Change Set')
    obmenu_change_set()
    oblib.menu_end()
    apod.obmenu_archive_folders(t='menu')
    oblib.item('Toggle List', 'wallpaper.py --silent --toggle')
    oblib.item('Random', 'wallpaper.py --silent --random')
    oblib.pipe_end()
    def gen_obmenu_alt():
    import oblib
    oblib.pipe_start()
    oblib.sep('Alt Menu')
    obmenu_change_set('alt')
    oblib.pipe_end()
    def obmenu_change_set(a='default', dl=menu_default, al=menu_alt):
    import oblib
    menu = check_list(a, dl=dl, al=al, returnF=True)
    if menu != False:
    f = open(menu, 'r')
    for line in f:
    i = line.split(',')
    oblib.item(strip_opt(i[0]), 'wallpaper.py --change {0}' .format(strip_opt(i[1])))
    f.close()
    else:
    for i in avaliable_folders():
    oblib.item(i, 'wallpaper.py --change {0}' .format(i))
    ##### TEST FUNCTIONS #####
    def parser_options():
    print('Options are: {0}' .format(options))
    print('Args are : {0}' .format(args))
    print('Command is : {0}' .format(command))
    def meta_info():
    if options.meta_source == None:
    print('No source specifieed')
    else:
    print('Script launched from source :: {0}' .format(options.meta_source))
    def test_module():
    #pass
    #print(check_list(args[0]))
    new_mod()
    def new_mod():
    #if path == None:
    # print('No path specified, using pwd')
    # path = os.curdir
    #need_new_name = False
    #print('Checking filenames in {0}' .format(path))
    #for name in os.listdir(path):
    # if name.find(" ") > -1:
    # print("Warning :: > < in {0}" .format(name))
    # need_new_name = True
    # if name.find("'") > -1:
    # print("Warning :: >'< in {0}" .format(name))
    # need_new_name = True
    # if name.find("&") > -1:
    # print("Warning :: >&< in {0}" .format(name))
    # need_new_name = True
    # if name.find('"') > -1:
    # print('Warning :: >"< in {0}' .format(name))
    # need_new_name = True
    # if need_new_name:
    # new_name = name.replace('"', "").replace(" ", "_").replace("&", "and").replace("'", "")
    # if re_name:
    # print("Renaming to new name:: {0}" .format(new_name))
    # os.rename(os.path.join(path, name), os.path.join(path, new_name))
    # else:
    # print("Suggested new name:: {0}" .format(new_name))
    # need_new_name = False
    pass
    ##### SANITISE WALLPAPER FILE NAMES #####
    def sane_names(path=None, re_name=False, msg=def_msg):
    """Check file names in a path."""
    if path == None:
    print('No path specified, using pwd')
    path = os.curdir
    need_new_name = False
    print('Checking filenames in {0}' .format(path))
    for name in os.listdir(path):
    if name.find(" ") > -1:
    print("Warning :: > < in {0}" .format(name))
    need_new_name = True
    if name.find("'") > -1:
    print("Warning :: >'< in {0}" .format(name))
    need_new_name = True
    if name.find("&") > -1:
    print("Warning :: >&< in {0}" .format(name))
    need_new_name = True
    if name.find('"') > -1:
    print('Warning :: >"< in {0}' .format(name))
    need_new_name = True
    if need_new_name:
    new_name = name.replace('"', "").replace(" ", "_").replace("&", "and").replace("'", "")
    if re_name:
    print("Renaming to new name:: {0}" .format(new_name))
    os.rename(os.path.join(path, name), os.path.join(path, new_name))
    else:
    print("Suggested new name:: {0}" .format(new_name))
    need_new_name = False
    print('File name check complete')
    ##### MAIN FUNCTION #####
    def Main(msg=def_msg):
    """Chooses which command to run."""
    if options.direction != None: # a dircetion has been set
    list_sequence(com=options.direction, seq=options.whichlist, msg=msg)
    elif command == 'last':
    set_wallpaper_last(msg=msg)
    elif command == 'info':
    current_wallpaper_info(msg=msg)
    ## change folder
    elif options.newfolder != None:
    change_folder(options.newfolder, msg=msg)
    ## apod
    elif command == 'apod':
    #apod.download2(msg=msg, test=test)
    try:
    import apod
    apod.download2(msg=msg, test=test)
    except:
    pass
    elif command == 'apod-save':
    #apod.apod_save('today', msg=msg, test=test)
    try:
    import apod
    apod.apod_save('today', msg=msg, test=test)
    except:
    pass
    ## list management
    elif options.toggle != None:
    toggle_list(options.whichlist, com=options.toggle, msg=msg)
    ## openbox menu
    elif command == 'obmenu':
    gen_obmenu_standard()
    elif command == 'obmenu-simple':
    gen_obmenu_simple()
    elif command == 'obmenu-alt':
    gen_obmenu_alt()
    ## filename check
    elif command == 'sane-name':
    sane_names(path=options.sane_path, re_name=options.sane_rename, msg=msg)
    ## cycle
    elif command == 'cycle':
    print('ERROR :: function not implemented')
    elif command == 'testmod':
    test_module()
    elif options.whichlist != None: # a list but no direction specified
    list_sequence(seq=options.whichlist, msg=msg)
    elif command == "TestNone":
    print('Test mode null op[tion')
    elif command == None: ## no command specified
    pass
    else:
    print('Error :: no valid command found')
    ##### SCRIPT STARTUP #####
    if __name__ == "__main__":
    # def parse_change(option, opt_str, value, parser):
    # parser.values.command = 'change'
    # parser.values.newfolder = value
    # def parse_smask(option, opt_str, value, parser):
    # parser.values.command = 'set-mask'
    # parser.values.mask = value
    def parse_cycle(option, opt_str, value, parser):
    parser.values.command = 'cycle'
    parser.values.interval = value
    def parse_msglevel(option, opt_str, value, parser):
    parser.values.msg = value
    # def parse_addfile(option, opt_str, value, parser):
    # parser.values.command = 'addfile'
    # parser.values.whichlist = value
    # def parse_rmfile(option, opt_str, value, parser):
    # parser.values.command = 'rmfile'
    # parser.values.whichlist = value
    parser = OptionParser(usage = "usage: %prog [options] command", version="%prog {0}" .format(__version__),
    description = "Drews Script to the manage wallpapers using feh.")
    parser.set_defaults(command=None, whichlist=None, direction=None, toggle=None, newfolder=None)
    standard = OptionGroup(parser, "Standard Options")
    metaopt = OptionGroup(parser, "Meta Info Options", "Further datails about the script startup useful for debugging")
    gapod = OptionGroup(parser, "APOD Options", "Controls for the Astronomy Picture of the Day. ")
    obmenu = OptionGroup(parser, "Openbox Menu", "Support for openbox xml menu generation. ")
    #groupalt = OptionGroup(parser, "Alternative Wallpapers")
    gplist = OptionGroup(parser, "List Support")
    namecheck = OptionGroup(parser, "Filename Support")
    direction = OptionGroup(parser, "Direction Commands")
    ## Standard Options
    standard.add_option("-q", "--quiet",
    action="store_true", dest="quiet", default=False, #help=SUPPRESS_HELP)
    help="only display warnings and errors")
    standard.add_option("-v", "--verbose",
    action="store_true", dest="verbose", default=False, #help=SUPPRESS_HELP)
    help="display all output")
    standard.add_option("--debug",
    action="store_true", dest="debug", default=False, #help=SUPPRESS_HELP)
    help="debug mode: detailed output of commands")
    standard.add_option("--really-quiet",
    action="store_true", dest="reallyquiet", default=False, help=SUPPRESS_HELP)
    #help="only display errors")
    standard.add_option("--silent",
    action="store_true", dest="silent", default=False, help=SUPPRESS_HELP)
    #help="don't display any output")
    standard.add_option('-t', "--test",
    action="store_true", dest="test", default=False, #help=SUPPRESS_HELP)
    help="test mode :: only print output")
    standard.add_option("--test-mod",
    action="store_const", const="testmod", dest="command", #help=SUPPRESS_HELP)
    help="test mode :: use test function module")
    standard.add_option("--test-none",
    action="store_const", const="TestNone", dest="command", #help=SUPPRESS_HELP)
    help="test mode :: no command specified")
    parser.add_option("--info", '-i',
    action="store_const", const="info", dest="command",
    help="Displays information about the current wallpaper.")
    parser.add_option("--last", '-l',
    action="store_const", const="last", dest="command",
    help="Sets the wallpaper as the last picture")
    direction.add_option('-n', "--next",
    action="store_const", const="next", dest="direction",
    help="Sets the next wallpaper in the sequence")
    direction.add_option('-p', "--prev", '--previous',
    action="store_const", const="prev", dest="direction",
    help="Sets the previous wallpaper in the sequence")
    direction.add_option('-r', '--rand', "--random",
    action="store_const", const="random", dest="direction",
    help="Sets a random wallpaper from the sequence")
    direction.add_option('-1', '--first', "--safe",
    action="store_const", const="first", dest="direction",
    help="Sets the first wallpaer in the sequence")
    gplist.add_option('-d', "--default",
    action="store_const", const="default", dest="whichlist",
    help="Uses the wallpapers from the default file list")
    gplist.add_option("--alt",
    action="store_const", const="alt", dest="whichlist",
    help="Uses the wallpapers from the alternative list")
    parser.add_option("--change", '-c',
    metavar="Folder[:Filter]", dest="newfolder",
    help="Changes the wallpaper folder, optional filter.")
    gapod.add_option('-a', "--apod",
    action="store_const", const="apod", dest="command",
    help="downloads and sets the wallpaper as todays APOD picture")
    gapod.add_option("--apod-save",
    action="store_const", const="apod-save", dest="command",
    help="Saves todays APOD picture")
    # gapod.add_option("--apod-last",
    # action="store_const", const="apod-last", dest="command",
    # help="Sets the wallpaper as yesterdays APOD picture")
    # gapod.add_option("--apod-force",
    # action="store_const", const="apod-force", dest="command",
    # help="force the download of todays APOD picture")
    gplist.add_option("--add-to-list",
    action="store_const", const='rmfile', dest='toggle',
    help="Adds the current wallpaper to the list.")
    gplist.add_option("--remove-from-list",
    action="store_const", const='addfile', dest='toggle',
    help="Removes the current wallpaper from a list.")
    gplist.add_option("--toggle-list", '--toggle',
    action="store_const", const='toggle', dest='toggle',
    help="Adds/Removes the current wallpaper from a list.")
    gplist.add_option("--list",
    metavar="LIST", dest='whichlist',
    help="Sets which list to use.")
    obmenu.add_option("--obmenu",
    action="store_const", const="obmenu", dest="command",
    help="Prints the standard openbox menu.")
    obmenu.add_option("--obmenu-simple",
    action="store_const", const="obmenu-simple", dest="command",
    help="Prints the simple openbox menu.")
    obmenu.add_option("--obmenu-alt",
    action="store_const", const="obmenu-alt", dest="command", #help=SUPPRESS_HELP)
    help="Prints the alternative openbox menu.")
    namecheck.add_option("--name-check",
    action="store_const", const="sane-name", dest="command",
    help="Checks if wallpaper names are valid.")
    namecheck.add_option("--name-path",
    metavar="PATH", dest="sane_path", default=None,
    help="Which folder to check.")
    namecheck.add_option("--rename",
    action="store_true", dest="sane_rename", default=False,
    help="If to rename invalid files.")
    metaopt.add_option("--meta-from",
    metavar="Source", dest='meta_source', default=None,
    help="Details from where the script was launched from")
    parser.add_option_group(direction)
    parser.add_option_group(gplist)
    parser.add_option_group(gapod)
    parser.add_option_group(obmenu)
    #parser.add_option_group(standard)
    #parser.add_option_group(metaopt)
    #parser.add_option_group(namecheck)
    (options, args) = parser.parse_args()
    test = options.test
    #debug = options.debug
    #verbose = options.verbose
    #quiet = options.quiet
    ## message level
    if options.debug == True:
    msg = 5
    elif options.verbose == True:
    msg = 4
    elif options.quiet == True:
    msg = 2
    elif options.reallyquiet == True:
    msg = 1
    elif options.silent == True:
    msg = 0
    else:
    msg = 3
    #if options.command == None:
    # try: # try and find a command
    # command = args[0]
    # except:
    # pass
    #else:
    # command = options.command
    command = options.command
    if options.debug:
    parser_options()
    meta_info()
    LockScript(Main, msg=msg) # start the script
    else:
    pass
    apod.py
    #!/usr/bin/python3
    #Filename: apod.py
    __version__ = '3.2.0'
    import os, sys
    from optparse import OptionParser, OptionGroup, SUPPRESS_HELP
    import shutil
    from datetime import date
    #print('loaded apod')
    ##### VARIABLES #####
    ## Files and Paths
    #apod_archive_folder = '/home/wallpaper/apod_archive'
    archive_folder = '/home/wallpaper/apod_archive'
    save_folder = '/home/wallpaper/Space'
    tmpdir = '/tmp/wallpaper/apod'
    html_file = os.path.join(tmpdir, 'apod-html')
    img_file = os.path.join(tmpdir, 'apod-img')
    index_file = os.path.join(tmpdir, 'apod-index')
    work = os.path.expanduser('~/.config/openbox/apod')
    date_file = os.path.join(work, 'apod-date')
    apodfile = os.path.join(work, 'apod')
    apodlast = os.path.join(work, 'apod-last')
    namefile = os.path.join(work, 'apod-names')
    video_dir = os.path.join(work, 'apod-videos')
    errs = os.path.join(work, 'archive-errors')
    dtoday = str(date.today()) # todays date
    thisyear = dtoday[:4]
    saveprefix = 'APOD-'
    ## Defaults
    def_test = False
    def_msg = 3
    def_command = None
    def_apodset = True
    def_archive_apod = True # Keep all APOD pictures
    def_clear_apod = False
    def_force_apod = False
    def_cutoff = None
    store_file_list = ''
    ##### LOCK v2 #####
    ## Lock v2
    def LockScript(fun, lock='/tmp/apod.lock', msg=def_msg):
    """Locks the script before starting a function."""
    from os import O_CREAT, O_EXCL
    try: # lock the function
    fd = os.open(lock, O_CREAT+O_EXCL)
    #print('created lock file')
    except OSError:
    print('Already running function {0}...' .format(fun))
    sys.exit(1)
    try:
    fun(msg)
    finally:
    try: # release lock
    os.remove(lock)
    except:
    print('Error :: Lockfile missing !!!')
    ##### DEFINITIONS #####
    def get_date(dfile=date_file):
    check_file(dfile, create=True, msg=1)
    f = open(dfile)
    return f.read()
    def check_dir(d, create=False, msg=def_msg):
    """Check if path exists."""
    if not os.path.exists(d):
    if msg > 3:
    print('Error : folder missing...')
    if create:
    try:
    os.makedirs(d)
    if msg > 3 :
    print('...created folder')
    return True
    except:
    print('Fatal Error :: could not create directory {0}' .format(d))
    sys.exit()
    else:
    return False
    elif not os.path.isdir(d):
    print('Fatal Error :: this is not a directory')
    sys.exit()
    else:
    return True
    def check_file(f, create=False, msg=def_msg):
    """Check if path exists."""
    if not os.path.exists(f):
    #if msg > 3:
    # print('Error : file missing...')
    if create:
    check_dir(os.path.dirname(f), create=create, msg=msg)
    if msg > 5:
    print('creating file {0}' .format(f))
    try:
    q = open(f, 'w')
    q.write('')
    q.close()
    return True
    except:
    if msg >= 1:
    print('Fatal Error :: could not create file {0}' .format(f))
    sys.exit()
    else:
    if msg >= 5:
    print('file {0} does not exist' .format(f))
    return False
    else:
    if msg >= 5:
    print('file {0} exists' .format(f))
    return True
    def copy_file(ffrom, fto, msg=def_msg, test=def_test):
    """Copy files, from to (with test option)."""
    if test:
    print('[[copy command: {0} to {1}]]' .format(ffrom, fto))
    else:
    try:
    shutil.copy(ffrom, fto)
    except:
    if not os.path.exists(ffrom):
    print('Warning: error copying file, does not exist')
    elif os.path.isdir(ffrom):
    print('Fatal Error :: file being copied is a directory!')
    sys.exit()
    else:
    print('Fatal Error :: UNKNOWN ERROR during copy')
    sys.exit()
    def download_files(hfile=html_file, ifile=img_file, datefile=date_file, msg=def_msg, test=def_test, apodset=def_apodset, day='today', archive_apod=def_archive_apod):
    """Download the APOD html and img."""
    import urllib.request
    import socket
    timeout = 10
    socket.setdefaulttimeout(timeout)
    if day == 'today':
    url = 'http://antwrp.gsfc.nasa.gov/apod/astropix.html'
    name = dtoday
    year = thisyear
    else:
    url = 'http://antwrp.gsfc.nasa.gov/apod/ap{0}.html' .format(day)
    name = day
    if day[:1] == '9' :
    name = '19{0}-{1}-{2}' .format(day[:2], day[2:4], day[4:])
    else:
    name = '20{0}-{1}-{2}' .format(day[:2], day[2:4], day[4:])
    year = name[:4]
    try:
    response = urllib.request.urlopen(url)
    html = response.read()
    if msg > 3:
    print('downloaded html data for {0}' .format(day))
    check_file(hfile, create=True, msg=msg)
    f = open(hfile, 'wb')
    f.write(html)
    f.close()
    except:
    if msg >= 1:
    print('ERROR :: page not found :: exiting.')
    sys.exit(1)
    if day == 'today':
    t = open(datefile, 'w')
    t.write(dtoday)
    t.close()
    if msg > 3:
    print('updated date file with todays date')
    if msg > 3:
    print('copying over yesterdays APOD image')
    copy_file(apodfile, apodlast, msg=msg, test=test)
    found_img = False
    with open(hfile, 'r', encoding='latin-1') as g:
    for line in g:
    if 'IMG SRC' in line:
    i = line.split('"')
    if msg > 4:
    print('found image : {0}' .format(i[1]))
    found_img = True
    try:
    img_responce = urllib.request.urlopen(os.path.join('http://antwrp.gsfc.nasa.gov/apod/', i[1]))
    img_data = img_responce.read()
    except:
    print('error in img download')
    check_dir(errs, create=True, msg=1)
    check_file(os.path.join(errs, name), create=True, msg=0)
    else:
    if msg >= 5:
    print('read img data')
    check_file(ifile, create=True, msg=0)
    if msg >= 5:
    print('created img file')
    with open(ifile, 'wb') as l:
    l.write(img_data)
    if msg >= 3:
    print('downloaded image for {0}' .format(day))
    if day == 'today':
    copy_file(ifile,apodfile, msg=msg, test=test)
    if archive_apod:
    apod_archive(msg=msg, test=test, dfile=ifile, year=year, name=name)
    if not found_img :
    if msg >= 3:
    print('video :: not found image line in file from {0}' .format(i))
    check_file(os.path.join(video_dir, name), create=True, msg=0)
    if day == 'today':
    print('Warning : no image line in html file')
    copy_file(apodlast,apodfile, msg=msg, test=test)
    os.remove(hfile)
    os.remove(ifile)
    def apod_archive(dfile=img_file, msg=def_msg, test=def_test, year=thisyear, name=dtoday):
    """Archive APOD picture."""
    arch_file = os.path.join(archive_folder, year, name)
    check_dir(os.path.join(archive_folder, year), msg=msg, create=True)
    if check_file(arch_file, create=False, msg=msg):
    if msg > 3:
    print('APOD picture already archived')
    else:
    if msg > 3:
    print('Archiving APOD picture')
    copy_file(dfile, arch_file, msg=msg, test=test)
    def apod_save(day='current', sfolder=save_folder, msg=def_msg, test=def_test, prefix=saveprefix):
    """Save APOD picture as best of APOD."""
    with open(os.path.expanduser('~/.fehbg'), 'r') as f:
    a = f.read()
    b = a[15:-1]
    f.close()
    if day == 'today' or b[-4:] == 'apod':
    source = apodfile
    sfile = prefix + dtoday
    elif day == 'current':
    if not (os.path.dirname(b) == archive_folder or os.path.dirname(os.path.dirname(b)) == archive_folder ):
    print('picture is not in the recognised apod archive folder')
    sys.exit()
    source = b
    sfile = prefix+ b[-10:]
    else:
    if msg >= 1:
    print('unknown file specified')
    sys.exit(1)
    if msg > 3:
    print('Saving APOD picture to Save folder')
    copy_file(source, os.path.join(sfolder, sfile), msg=msg, test=test)
    def set_apod(a=apodfile, msg=def_msg, test=def_test, apodset=def_apodset ):
    """Sets the APOD wallpaper."""
    if not apodset:
    if msg > 3:
    print('Skipping setting APOD picture')
    else:
    if msg > 3:
    print('Setting APOD picture')
    if test:
    print("exec :: feh --bg-scale {0}" .format(a))
    else:
    os.system("feh --bg-scale {0}" .format(a))
    def clear_date(msg=def_msg, test=False):
    """Clears the date file."""
    if msg > 3:
    print('reseting date')
    if not test:
    t = open(datefile, 'w')
    t.write('')
    t.close()
    ##### APOD NAMES #####
    def get_name(fname=None, names=namefile, msg=def_msg, rerun=True, prefix=saveprefix):
    """Returns the name of an APOD file."""
    name_index = []
    title_index = []
    with open(names, 'r') as f:
    for line in f:
    i = line.split(',', 3)
    name_index.append(i[0])
    title_index.append(i[3])
    if fname == None:
    if msg >= 4:
    print('getting todays date')
    date = get_date()
    elif fname.startswith(prefix):
    if msg >= 4:
    print('removing save prefix from name')
    date = fname[len(prefix):]
    else:
    date = fname
    try:
    c = name_index.index(date)
    return title_index[c][:-2]
    except:
    if rerun:
    if msg >= 2:
    print('Warning :: name not in index, recreating')
    download_apod_index(msg=msg)
    build_name_list(msg=msg)
    get_name(fname=fname, names=names, msg=msg, rerun=False)
    else:
    if msg >= 1:
    print('Error :: name not in index, please recreate')
    def regen_index(msg=def_msg, cutoff=None):
    download_apod_index(msg=msg)
    build_name_list(msg=msg, cutoff=cutoff)
    def file_status(date, msg=def_msg, cutoff=None):
    """Status of an APOD Picture."""
    downloaded_files = [] # files in main apod download folder
    archive_files = [] # files in sub folder
    archive_download = [] # files from archive download
    videolist = []
    for i in os.listdir(archive_folder):
    if os.path.isdir(os.path.join(archive_folder,i)):
    for j in os.listdir(os.path.join(archive_folder, i)):
    j1 = j[2:]
    j2 = j1.replace('-','')
    archive_files.append(j2)
    else:
    i1 = i[2:]
    i2 = i1.replace('-','')
    downloaded_files.append(i2)
    for i in os.listdir(video_dir):
    videolist.append(i)
    if date[:1] == '9' :
    tdate = '19{0}' .format(date)
    else:
    tdate = '20{0}' .format(date)
    if cutoff == None:
    cutoff = '1995' # apod started 1995 06 16
    if tdate <= cutoff:
    return 'cut-off'
    try:
    downloaded_files.index(date)
    if msg >= 5:
    print('picture has been downloaded')
    return 'downloaded' #print('picture from {0} has already been downloaded' .format(pagedate))
    except:
    pass
    try:
    archive_files.index(date)
    if msg >= 5:
    print('picture has been downloaded')
    return 'archived' #print('picture from {0} has already been downloaded' .format(pagedate))
    except:
    pass
    try:
    archive_download.index(date)
    if msg >= 5:
    print('picture has been downloaded by archive retrieval')
    return 'retrieved'
    except:
    pass
    try:
    videolist.index(date)
    if msg >= 5:
    print('picture is a video')
    return 'video file'
    except:
    if msg >= 5:
    print('picture is missing')
    return 'missing'
    def download_apod_index(msg=def_msg, index=index_file):
    """Downloads the apod index file."""
    import urllib.request
    try:
    response = urllib.request.urlopen('http://antwrp.gsfc.nasa.gov/apod/archivepix.html')
    html = response.read()
    if msg > 3:
    print('downloaded apod index')
    check_file(index, create=True, msg=msg)
    f = open(index, 'wb')
    f.write(html)
    f.close()
    except:
    if msg >= 1:
    print('Fatal Error :: index page not found')
    sys.exit()
    def build_name_list(msg=def_msg, index=index_file, names=namefile, cutoff=None):
    """Builds a name list."""
    check_file(names, create=True, msg=msg)
    data = []
    with open(index, 'r') as f:
    for line in f:
    if '<a href="ap' in line:
    i = line.split(':', 1)
    imgdate = i[1][13:19]
    imgname = i[1][26:-9]
    status = file_status(date=imgdate, msg=msg, cutoff=None)
    if imgdate[:1] == '9' :
    imgfile = '19{0}-{1}-{2}' .format(imgdate[:2], imgdate[2:4], imgdate[4:])
    else:
    imgfile = '20{0}-{1}-{2}' .format(imgdate[:2], imgdate[2:4], imgdate[4:])
    if msg >= 3:
    print('found file : date = {0} : status = {1} : filename = {2}' .format(imgdate, status, imgfile))
    data.append('{0},{1},{2},{3} \n' .format(imgfile, imgdate, status, imgname))
    if msg >= 4:
    print('finished parsing index file')
    with open(namefile, 'w') as newf:
    for j in data:
    newf.writelines(j)
    if msg >= 4:
    print('written new name list')
    ##### MACROS #####
    def download2(msg=def_msg, test=def_test, apodset=def_apodset, force_apod=def_force_apod, clear_apod=def_clear_apod, archive_apod=def_archive_apod):
    """Downloads and sets APOD picture."""
    if clear_apod:
    clear_date(msg=msg, test=test)
    if force_apod:
    if msg >= 3:
    print('download forced')
    if get_date() != dtoday or force_apod:
    download_files(msg=msg, test=test, archive_apod=archive_apod)
    else:
    if msg >= 2:
    print('apod has already been downloaded today')
    set_apod(msg=msg, test=test, apodset=apodset) # #set apod picture
    def archive_download(msg=def_msg, newindex=False, cutoff=None, test=def_test):
    """Search and download missing pictures from the APOD archive pages"""
    if newindex:
    regen_index(msg=msg, cutoff=cutoff)
    target_dates = []
    with open(namefile, 'r') as g:
    for line in g:
    i = line.split(',')
    if i[2] == 'missing':
    if file_status(date=i[1], msg=msg) == 'missing':
    target_dates.append(i[1])
    if msg >= 4:
    print('target list built')
    target_dates.sort()
    for j in target_dates:
    if msg >= 4:
    print('')
    download_files(msg=msg, test=test, day=j, archive_apod=True)
    ##### OPENBOX MENU #####
    def gen_obmenu_standard():
    import oblib
    oblib.pipe_start()
    oblib.item('APOD', 'apod.py --update')
    oblib.item('APOD Save', 'apod.py --save')
    oblib.item('APOD Force', 'apod.py --force')
    oblib.pipe_end()
    def obmenu_archive_folders(t='pipe'):
    import oblib
    years = []
    for i in os.listdir(archive_folder):
    if os.path.isdir(os.path.join(archive_folder,i)):
    years.append(i)
    years.sort()
    years.reverse()
    if t == 'pipe':
    oblib.pipe_start()
    else:
    oblib.menu_start('Apod Archive')
    for k in years:
    oblib.item('Apod: {0}' .format(k), 'wallpaper.py --change {0}/{1}' .format(archive_folder, k))
    if t == 'pipe':
    oblib.pipe_end()
    else:
    oblib.menu_end()
    ##### TEST FUNCTIONS #####
    def parser_options():
    print('Options are: {0}' .format(options))
    print('Args are : {0}' .format(args))
    print('Command is : {0}' .format(options.command))
    def meta_info():
    if options.meta_source == None:
    print('No source specifieed')
    else:
    print('Script launched from source :: {0}' .format(options.meta_source))
    def test_module(msg=def_msg):
    pass
    #gen_obmenu_arfolders()
    #unicode_test()
    #apod_archive_download(msg=msg)
    #print(check_list(args[0]))
    #regen_index(msg=msg)
    #print(get_name(fname=None, msg=msg))
    #print(len(saveprefix))
    ##### MAIN FUNCTION #####
    def Apod_Main(msg=def_msg):
    """Main functions."""
    command = options.command
    check_dir(work, create=True, msg=msg)
    if options.regen_index :
    regen_index(msg=msg, cutoff=options.cutoff)
    if command == None:
    command = 'pass'
    if command == "download":
    if msg > 3:
    print('Updating APOD')
    download2(msg=msg, test=options.test, apodset=options.apodset, force_apod=options.force, clear_apod=options.clear, archive_apod=options.archive)
    elif command == "download-only":
    if msg > 3:
    print('Downloading APOD picture only')
    download2(msg=msg, test=options.test, apodset=False, force_apod=options.force, clear_apod=options.clear, archive_apod=False)
    elif command == "last":
    if msg > 3:
    print('Setting last APOD')
    set_apod(apodlast, msg=msg, test=options.test, apodset=options.apodset)
    elif command == "save-today":
    apod_save('today', msg=msg, test=options.test)
    elif command == "save":
    apod_save('current', msg=msg, test=options.test)
    elif command == "set":
    if msg > 3:
    print('Setting APOD')
    set_apod(msg=msg, test=options.test, apodset=options.apodset)
    elif command == "restore":
    if msg > 3:
    print('Restoreing yesterdays APOD picture.')
    copy_file(apodlast, apodfile, msg=msg, test=options.test)
    set_apod(msg=msg, test=options.test, apodset=options.apodset)
    elif command == 'retrieve':
    archive_download(msg=msg, newindex=options.newindex, cutoff=options.cutoff)
    elif command == 'testmod':
    test_module(msg=msg)
    elif command == "TestNone":
    print('Test mode null op[tion')
    elif command == "pass":
    if msg >= 4:
    print('pass option has been called')
    elif not command == None:
    if msg >= 2:
    print('Warning :: Unrecognised command specified')
    #pass
    else:
    if msg >= 2:
    print('Warning :: no commands found, using default option')
    set_apod(msg=msg, test=options.test, apodset=options.apodset)
    ##### SCRIPT STARTUP #####
    if __name__ == "__main__":
    parser = OptionParser(usage = "usage: %prog [download options] [command]", version="%prog {0}" .format(__version__),
    description = "Script to manage APOD wallpapers.")
    parser.set_defaults(archive=def_archive_apod, apodset=def_apodset, command=None)
    standard = OptionGroup(parser, "Standard Options")
    doptions = OptionGroup(parser, "Download Options")
    aoptions = OptionGroup(parser, "Archive Options")
    metaopt = OptionGroup(parser, "Meta Info Options", "Further datails about the script startup useful for debugging")
    standard.add_option("-q", "--quiet",
    action="store_true", dest="quiet", default=False,
    help="only display warnings and errors")
    standard.add_option("-v", "--verbose",
    action="store_true", dest="verbose", default=False,
    help="display all output")
    standard.add_option("--debug",
    action="store_true", dest="debug", default=False,
    help="debug mode: detailed output of commands")
    standard.add_option("--really-quiet",
    action="store_true", dest="reallyquiet", default=False, help=SUPPRESS_HELP)
    #help="only display errors")
    standard.add_option("--silent",
    action="store_true", dest="silent", default=False, help=SUPPRESS_HELP)
    #help="don't display any output")
    standard.add_option('-t', "--test",
    action="store_true", dest="test", default=False, help=SUPPRESS_HELP)
    #help="test mode :: only print output")
    standard.add_option("--test-mod",
    action="store_const", const="testmod", dest="command", help=SUPPRESS_HELP)
    #help="test mode :: use test function module")
    standard.add_option("--test-none", "--pass",
    action="store_const", const="TestNone", dest="command", help=SUPPRESS_HELP)
    #help="test mode :: no command specified")
    parser.add_option('-a', '-u', '--update',
    action="store_const", const="download", dest="command",
    help="Downloads and sets the wallpaper as todays APOD picture")
    parser.add_option("--save",
    action="store_const", const="save", dest="command",
    help="Saves the curent APOD wallpaper")
    parser.add_option("--set",
    action="store_const", const="set", dest="command",
    help="Sets wallpaper as APOD")
    parser.add_option('--download-only',
    action="store_const", const="download-only", dest="command",
    help="Only downloads todays APOD picture")
    parser.add_option("--last",
    action="store_const", const="last", dest="command",
    help="Sets the wallpaper as yesterdays APOD picture")
    parser.add_option("--restore",
    action="store_const", const="restore", dest="command", help=SUPPRESS_HELP)
    #help="Restores yesterdays APOD picture as todays.")
    aoptions.add_option("--retrieve", '--populate',
    action="store_const", const="retrieve", dest="command",
    help="Retrives archive APOD images from the APOD archive")
    aoptions.add_option("--regen-index",
    action="store_true", dest="regen_index", default=False,
    help="Regenerates the APOD index file")
    aoptions.add_option("--no-index",
    action="store_false", dest="newindex", default=True, help=SUPPRESS_HELP)
    #help="Do not build a nex index")
    aoptions.add_option("--cut-off",
    metavar="Date", dest='cutoff', default=def_cutoff,
    help="Cut off date for downloading archive pictures")
    # parser.add_option("--get-name",
    # metavar="NAME", dest="getname", default=None,
    # help="Returns the name of a pictures name")
    doptions.add_option("--force",
    action="store_true", dest="force", default=def_force_apod,
    help="Force the download of todays APOD picture")
    doptions.add_option("--clear",
    action="store_true", dest="clear", default=def_clear_apod, help=SUPPRESS_HELP)
    #help="resets the date of last APOD download.")
    doptions.add_option("--archive",
    action="store_true", dest="archive",
    help="If to archive a picture after download")
    doptions.add_option("--no-archive",
    action="store_false", dest="archive",
    help="If to archive a picture after download")
    doptions.add_option("--force-set",
    action="store_true", dest="apodset", help=SUPPRESS_HELP)
    #help="If to set the wallpaper as APOD.")
    doptions.add_option("--no-set",
    action="store_false", dest="apodset", help=SUPPRESS_HELP)
    #help="Skips setting APOD as wallpaper")
    metaopt.add_option("--meta-from",
    metavar="Source", dest='meta_source', default=None,
    help="Details from where the script was launched from")
    parser.add_option_group(doptions)
    parser.add_option_group(aoptions)
    parser.add_option_group(standard)
    #parser.add_option_group(metaopt)
    (options, args) = parser.parse_args()
    ## message level
    if options.debug == True:
    msg = 5
    elif options.verbose == True:
    msg = 4
    elif options.quiet == True: # warnings
    msg = 2
    elif options.reallyquiet == True: # errors only
    msg = 1
    elif options.silent == True: # no output
    msg = 0
    else:
    msg = 3
    if options.debug:
    parser_options()
    meta_info()
    LockScript(Apod_Main, msg=msg)

  • Non-latin elements (=XML tag names) processing

    Hello there,
    How could I process XML with non-latin tag names? As far as I know, XI itself cannot map or interact with these XML elements nor design these names in IB.
    But I have to work with it and what should I do? The only way for me is to write EJB-module for adapters which could remap these names into latin ones using simple mapping table and XSLT.
    PS There are no problems with Unicoded content, but BIG deal with naming convention

    Just a remark, surprisingly for me I can use non-latinized (russian for example) XSD as an external definition and create message type based on it.
    And I can use russian elements in graphical mapping too but not in own XI elements.
    So this is much more interface problem, not basis one.

Maybe you are looking for