FasdUAS 1.101.10 k l  Written by: Sean Long On: 01/27/2006 Updated: 02/03/2006 From: http://www.hailstonesoftware.com Purpose: Copy all the tabs in one Safari window to another Safari window. This script relies heavily on GUI scripting to compensate for the pathetic built-in scripting of Safari. A window will pop-up at the start of the script if GUI scripting is not turned on. Safari Version Tested: 2.0.3 on Mac OS X 10.4.4 License: Free to use how you choose.  l  l  5/ Tell user if they do not have GUI scripting on   l2 O2 k1 e 1  pALL Z 1 1  uien n I 0 main_entry f O1 k0 I! .miscactvnullnull !" !r"*#$ #4"&%  xppb %m$%& &*$com.apple.preference.universalaccess $1&)  xpcp"' 'I+0( .sysodlogaskrTEXT (m+,) ){UI element scripting is not enabled. Check "Enable access for assistive devices" Once enabled please relaunch this script. m**nullsSystem Preferences.appt28k؈<ОH0ylsprfalis| Macintosh HD$&H+System Preferences.appg9 ApplicationsᔦԪn0Macintosh HD:Applications:System Preferences.app.System Preferences.app Macintosh HD#Applications/System Preferences.app/ m++null System Events.app刊<288k؈О0ylsevsalis Macintosh HD$&H+ System Events.appg! CoreServicesᔦԒj :Macintosh HD:System:Library:CoreServices:System Events.app$System Events.app Macintosh HD-System/Library/CoreServices/System Events.app/,- ,l-./ .i01 0I 0 main_entry 1O23 2k4456 5I .miscactvnullnull678 7l 89: 9l ; ;;5 show the user a list of Safari windows and have them:<= <l > >-' choose the window to get the tabs from=?@ ?r AB A2  cwin Bo 0safari_win_list@CD CrEF EJ Fo 0safari_win_name_listDGH GYBIJK Ik$=LLMN Mr$*OP On$(QR Q4%(S  cobj So&' 0i Ro$% 0safari_win_list Po 0this_winNTU Tl++UV VZ+=WX W>+0YZ Yl+.[ [n+.\] \1,.  pnam ]o+, 0this_win Zm./^ ^ downloads Xr39_` _n36ab a146  pnam bo34 0this_win `ncd c;78 do67 0safari_win_name_list 0i Jm Knef em  nmbr fngh g2  cobj ho 0safari_win_listHij irCRkl klCPm mICPno .gtqpchltns @@ns nl CDp poCD 0safari_win_name_listoqr  appr qmEFs sChoose Safari Windowrtu  prmp tl GHv vmGHw w4.This is the window you want to copy tabs FROM:uxy  empL xmKL  boovfalsyx  mlsl lo 0tab_source_winjz{ zlSS{|} |ZS_~ ~=SV oST 0tab_source_win mTU  boovfals LY[} l`` l`` ;5 show the user another list of Safari windows to copy l``  those tabs to. r`q l`o I`o .gtqpchltns @@ns l `a o`a 0safari_win_name_list  appr mbc Choose Safari Window  prmp l dg mdg 2,This is the window you want to copy tabs TO:  empL mjk  boovfals  mlsl o 0 tab_dest_win lrr Zr~ =ru ors 0 tab_dest_win mst  boovfals Lxz l n I 0give_window_focus o 0tab_source_win f l l & get urls for tabs in one Window r n I 0get_urls_for_tabs o 0tab_source_win f o 0urls l l % add the tabs to another window r o 0 tab_dest_win o 0 target_win n I 0give_window_focus o 0 target_win f l Y k r n 4  cobj o 0i o~ ~0urls o} } 0this_url n I|{ |0 create_tab oz z0 target_winy ox x 0this_urly{ fw r n 1v v pnam 4u u cwin mtt os s0 target_winw 0i mrr n mq q nmbr n 2p p cobj oo o0urlsn lmlmln 3mnull߀ Safari.app^`2<刊28k؈О0ylsfrialisL Macintosh HD$&H+ Safari.appU1* Applicationsᔦ1S$Macintosh HD:Applications:Safari.app Safari.app Macintosh HDApplications/Safari.app// lkjkj lii  Start helper methods lhghg i Ife f0get_urls_for_tabsd oc c0 window_namede kX r Jbb oa a 0tab_list l`_`_ OU k T l ^^  get number of tabs r  n    I ] \ ]0 get_num_tabs  [  o Z Z0 window_name[\  f  oY Y 0num_tabs lXWXW lVV 0* get current page URL if not tabs and bail ZRU = oT T 0num_tabs mSS r$ n! 1!R R pURL n mQ Q docu 5P O P cwin  oN N0 window_name O kfrmname n!" !;"# "o!"M M 0tab_listU k'R##$% $l''L&L & loop thru every tab%'K 'Y'R(J)*I (k1M++,- ,n18./ .I28H0G H 0 click_tab012 1o23F F0 window_name23E 3o34D D0iEG /f12-45 4r9A67 6n9?89 81=?C C pnam 949=B: B cwin :m;?><== =rBM>? >nBJ@A @1HJ< < pURL AnBHBC BmFH; ; docu C4BF:D : cwin DoDE9 90 window_name ?nEF E;KL FoJK8 8 0tab_list= J0i )m*+77 *o+,6 6 0num_tabsIKG5 GlSS43435 mHI HlVV2121IJ0 JLVXK KoVW/ / 0tab_list0LM Ll.-.-MNO Ni PQ PI,R+ ,0 create_tabRST So* *0 window_nameTU) Uo( ( 0new_url)+ Qk*VVWX WOYZ YO[\ [I ']^ '.prcskprsnullutxt ]m _ _t^&`% & faal `m $ $ eMdsKcmd% \4#a # prcs amb b Safari Zm+Xcd cI"e! ".sysodelanullnmbr emff?ə!dg gO*hi hr)jk jo   0new_url knlm l1&(  pURL mn &no nm$&  docu o4 $p  cwin pm"# im Oqr qlrst si uv uIw  0 click_tabwxy xo 0 window_nameyz zo 0 button_num vk%{{|} |r~ ~n I 0get_group_num_for_tabs o 0 window_name f o  0 group_num} O % O $ I#  .prcsclicuieluiel n 4   butT o 0 button_num n 4   sgrp o  0 group_num 5  cwin o 0 window_name  kfrmname 4   prcs m  Safari m +t l i I 0 get_num_tabs o 0 window_name k; r m o 0tabs O8 O7 k6 r n I 0get_group_num_for_tabs o 0 window_name f o 0 group_num Z4 ? o 0 group_num m r. n, l&, I&, .corecnte******** 2&(  butT n& 4#&  sgrp o$% 0 group_num 5#  cwin o ! 0 window_name  kfrmname o 0tabs r14 m12 o 0tabs l55 4   prcs m   Safari m+ L9; o9: 0tabs l i I 0give_window_focus o 0 window_name O O I  .prcsperfactTactT n  4  actT m  AXRaise 5   cwin o  0 window_name  kfrmname 4  prcs m  Safari m+ l i I 0get_group_num_for_tabs o 0 window_name kp r m o 0ret_val Om Ol kk l 3- Tabs are usually in the second to last group r n l I .corecnte******** 2  sgrp 5  cwin o 0 window_name  kfrmname o 0 group_num r" \  o 0 group_num m o 0 group_num l## l## UO But if there are no tabs the second to last group is possibly the bookmark bar r#3 n#1   l+1  I+1 .corecnte********  2+-  butT  n#+ 4(+  sgrp o)* 0 group_num 5#(  cwin o%& 0 window_name  kfrmname  o 0 num_buttons Z4i ?47 o45 0 num_buttons m56 k:e r:I n:G 1EG  help n:E 4BE!  butT !mCD  n:B"# "4?B$  sgrp $o@A 0 group_num #5:?%  cwin %o<= 0 window_name  kfrmname o 0help_txt&' &rJU() (IJS* .sysooffslongnull*+,  psof +mLM- -Show all bookmarks,.  psin .oNO 0help_txt )o 0 bookmark_test'/ /ZVe012 0?VY34 3oVW 0 bookmark_test 4mWX 1k\_5567 6l\\8 8,&we are in the bookmark group (no tabs)79 9r\_:; :m\] ;o 0ret_val 2rbe<= <obc 0 group_num =o 0ret_val> >ljj 4 ?  prcs ?m @ @ Safari m+A ALnpB Bono 0ret_valCD ClDEF ElFG Gl HIJKLMNOPH 0 main_entry 0get_urls_for_tabs 0 create_tab 0 click_tab 0 get_num_tabs 0give_window_focus 0get_group_num_for_tabs .aevtoappnull****I1~}QR| 0 main_entry~}Q {zyxwvuts {0safari_win_list z0safari_win_name_list y0i x 0this_win w0tab_source_win v0 tab_dest_win u0urls t0 target_win s 0this_urlRrqpon^mslwkjihgfe r.miscactvnullnull q cwin p cobj o nmbr n pnam m appr l prmp k empL j mlsli h.gtqpchltns @@ns g0give_window_focus f0get_urls_for_tabs e0 create_tab|*j O*-EOjvEO,k-,Ekh/EO, ,6FYh[OYOff EOfhYhOaff EOfhYhO)k+O)k+EOEO)k+O*k-,Ekh/EO)l+O*k/,E[OYOPUJdcbSTa d0get_urls_for_tabsc`U`U_ _0 window_namebS^]\[ ^0 window_name ] 0tab_list \ 0num_tabs [0iTZYXWVUT Z0 get_num_tabs Y cwin X kfrmname W docu V pURL U 0 click_tab T pnamaYjvEOM)k+EOj*0,,6FY-*kkh)l+O*k/,EO*/,,6F[OYOPUOKSQRQVWP S0 create_tabROXOXNM N0 window_name M 0new_urlQVLK L0 window_name K 0new_urlW +Jb_IHGfFEDC J prcs I faal H eMdsKcmd G.prcskprsnullutxt F.sysodelanullnmbr E cwin D docu C pURLP+*/ l UUOj O *k/,,FULBvA@YZ? B 0 click_tabA>[>[=< =0 window_name <0 button_num@Y;:9 ;0 window_name :0 button_num 9 0 group_numZ 8+765432 80get_group_num_for_tabs 7 prcs 6 cwin 5 kfrmname 4 sgrp 3 butT 2.prcsclicuieluiel?&)k+EO*/*0//j UUM10/\]. 10 get_num_tabs0-^-^, ,0 window_name/\+*) +0 window_name *0tabs ) 0 group_num] +('&%$#" ( prcs '0get_group_num_for_tabs & cwin % kfrmname $ sgrp # butT ".corecnte********.