Christophe Dumez
12 years ago
6 changed files with 751 additions and 367 deletions
@ -1,352 +1,352 @@
@@ -1,352 +1,352 @@
|
||||
<!DOCTYPE RCC><RCC version="1.0"> |
||||
<qresource> |
||||
<file>Icons/url.png</file> |
||||
<file>Icons/loading.png</file> |
||||
<file>Icons/3-state-checkbox.gif</file> |
||||
<file>Icons/sphere.png</file> |
||||
<file>Icons/slow_off.png</file> |
||||
<file>Icons/sphere2.png</file> |
||||
<file>Icons/L.gif</file> |
||||
<file>Icons/loading.png</file> |
||||
<file>Icons/magnet.png</file> |
||||
<file>Icons/slow.png</file> |
||||
<file>Icons/L.gif</file> |
||||
<file>Icons/skin/qbittorrent_mono_light.png</file> |
||||
<file>Icons/skin/seeding.png</file> |
||||
<file>Icons/skin/splash.png</file> |
||||
<file>Icons/skin/tabs.gif</file> |
||||
<file>Icons/skin/qbittorrent16.png</file> |
||||
<file>Icons/skin/connected.png</file> |
||||
<file>Icons/skin/qbittorrent22.png</file> |
||||
<file>Icons/skin/disconnected.png</file> |
||||
<file>Icons/skin/mascot.png</file> |
||||
<file>Icons/skin/paused.png</file> |
||||
<file>Icons/skin/slider-area.gif</file> |
||||
<file>Icons/skin/stalledDL.png</file> |
||||
<file>Icons/skin/error.png</file> |
||||
<file>Icons/skin/qbittorrent_mono_dark.png</file> |
||||
<file>Icons/skin/handle-icon-horizontal.gif</file> |
||||
<file>Icons/skin/qbittorrent32.png</file> |
||||
<file>Icons/skin/knob.gif</file> |
||||
<file>Icons/skin/filterall.png</file> |
||||
<file>Icons/skin/uploading.png</file> |
||||
<file>Icons/skin/queued.png</file> |
||||
<file>Icons/skin/checking.png</file> |
||||
<file>Icons/skin/handle-icon.gif</file> |
||||
<file>Icons/skin/arrow-right.gif</file> |
||||
<file>Icons/skin/filterinactive.png</file> |
||||
<file>Icons/skin/firewalled.png</file> |
||||
<file>Icons/skin/downloading.png</file> |
||||
<file>Icons/skin/toolbox-divider.gif</file> |
||||
<file>Icons/skin/stalledUP.png</file> |
||||
<file>Icons/skin/filteractive.png</file> |
||||
<file>Icons/skin/bg-handle-horizontal.gif</file> |
||||
<file>Icons/skin/download.png</file> |
||||
<file>Icons/skin/ratio.png</file> |
||||
<file>Icons/flags/sm.png</file> |
||||
<file>Icons/flags/lt.png</file> |
||||
<file>Icons/flags/th.png</file> |
||||
<file>Icons/flags/sd.png</file> |
||||
<file>Icons/flags/mr.png</file> |
||||
<file>Icons/flags/by.png</file> |
||||
<file>Icons/flags/sc.png</file> |
||||
<file>Icons/flags/mz.png</file> |
||||
<file>Icons/flags/tt.png</file> |
||||
<file>Icons/flags/kp.png</file> |
||||
<file>Icons/flags/re.png</file> |
||||
<file>Icons/flags/um.png</file> |
||||
<file>Icons/flags/ec.png</file> |
||||
<file>Icons/flags/fk.png</file> |
||||
<file>Icons/flags/aw.png</file> |
||||
<file>Icons/flags/lb.png</file> |
||||
<file>Icons/flags/vg.png</file> |
||||
<file>Icons/flags/do.png</file> |
||||
<file>Icons/flags/ee.png</file> |
||||
<file>Icons/flags/ck.png</file> |
||||
<file>Icons/flags/gn.png</file> |
||||
<file>Icons/flags/cg.png</file> |
||||
<file>Icons/flags/ao.png</file> |
||||
<file>Icons/flags/dk.png</file> |
||||
<file>Icons/flags/ms.png</file> |
||||
<file>Icons/flags/sg.png</file> |
||||
<file>Icons/flags/bw.png</file> |
||||
<file>Icons/flags/br.png</file> |
||||
<file>Icons/flags/cn.png</file> |
||||
<file>Icons/flags/ua.png</file> |
||||
<file>Icons/slow_off.png</file> |
||||
<file>Icons/sphere.png</file> |
||||
<file>Icons/sphere2.png</file> |
||||
<file>Icons/url.png</file> |
||||
<file>Icons/flags/ad.png</file> |
||||
<file>Icons/flags/ae.png</file> |
||||
<file>Icons/flags/tg.png</file> |
||||
<file>Icons/flags/ge.png</file> |
||||
<file>Icons/flags/ne.png</file> |
||||
<file>Icons/flags/km.png</file> |
||||
<file>Icons/flags/bf.png</file> |
||||
<file>Icons/flags/nf.png</file> |
||||
<file>Icons/flags/af.png</file> |
||||
<file>Icons/flags/ag.png</file> |
||||
<file>Icons/flags/ai.png</file> |
||||
<file>Icons/flags/al.png</file> |
||||
<file>Icons/flags/am.png</file> |
||||
<file>Icons/flags/an.png</file> |
||||
<file>Icons/flags/ao.png</file> |
||||
<file>Icons/flags/ar.png</file> |
||||
<file>Icons/flags/as.png</file> |
||||
<file>Icons/flags/at.png</file> |
||||
<file>Icons/flags/au.png</file> |
||||
<file>Icons/flags/aw.png</file> |
||||
<file>Icons/flags/ax.png</file> |
||||
<file>Icons/flags/az.png</file> |
||||
<file>Icons/flags/sl.png</file> |
||||
<file>Icons/flags/md.png</file> |
||||
<file>Icons/flags/ph.png</file> |
||||
<file>Icons/flags/mc.png</file> |
||||
<file>Icons/flags/mq.png</file> |
||||
<file>Icons/flags/ng.png</file> |
||||
<file>Icons/flags/vu.png</file> |
||||
<file>Icons/flags/et.png</file> |
||||
<file>Icons/flags/ba.png</file> |
||||
<file>Icons/flags/bb.png</file> |
||||
<file>Icons/flags/bd.png</file> |
||||
<file>Icons/flags/be.png</file> |
||||
<file>Icons/flags/bf.png</file> |
||||
<file>Icons/flags/bg.png</file> |
||||
<file>Icons/flags/bh.png</file> |
||||
<file>Icons/flags/bi.png</file> |
||||
<file>Icons/flags/bj.png</file> |
||||
<file>Icons/flags/nl.png</file> |
||||
<file>Icons/flags/ad.png</file> |
||||
<file>Icons/flags/tv.png</file> |
||||
<file>Icons/flags/fj.png</file> |
||||
<file>Icons/flags/to.png</file> |
||||
<file>Icons/flags/ru.png</file> |
||||
<file>Icons/flags/jp.png</file> |
||||
<file>Icons/flags/ma.png</file> |
||||
<file>Icons/flags/bz.png</file> |
||||
<file>Icons/flags/vn.png</file> |
||||
<file>Icons/flags/bt.png</file> |
||||
<file>Icons/flags/ht.png</file> |
||||
<file>Icons/flags/kw.png</file> |
||||
<file>Icons/flags/tr.png</file> |
||||
<file>Icons/flags/sy.png</file> |
||||
<file>Icons/flags/nr.png</file> |
||||
<file>Icons/flags/nz.png</file> |
||||
<file>Icons/flags/np.png</file> |
||||
<file>Icons/flags/uz.png</file> |
||||
<file>Icons/flags/in.png</file> |
||||
<file>Icons/flags/ga.png</file> |
||||
<file>Icons/flags/sa.png</file> |
||||
<file>Icons/flags/tl.png</file> |
||||
<file>Icons/flags/ly.png</file> |
||||
<file>Icons/flags/lr.png</file> |
||||
<file>Icons/flags/cz.png</file> |
||||
<file>Icons/flags/bm.png</file> |
||||
<file>Icons/flags/us.png</file> |
||||
<file>Icons/flags/ye.png</file> |
||||
<file>Icons/flags/gs.png</file> |
||||
<file>Icons/flags/sb.png</file> |
||||
<file>Icons/flags/hm.png</file> |
||||
<file>Icons/flags/ke.png</file> |
||||
<file>Icons/flags/so.png</file> |
||||
<file>Icons/flags/ni.png</file> |
||||
<file>Icons/flags/bn.png</file> |
||||
<file>Icons/flags/bo.png</file> |
||||
<file>Icons/flags/br.png</file> |
||||
<file>Icons/flags/bs.png</file> |
||||
<file>Icons/flags/bt.png</file> |
||||
<file>Icons/flags/bv.png</file> |
||||
<file>Icons/flags/bw.png</file> |
||||
<file>Icons/flags/by.png</file> |
||||
<file>Icons/flags/bz.png</file> |
||||
<file>Icons/flags/ca.png</file> |
||||
<file>Icons/flags/cc.png</file> |
||||
<file>Icons/flags/cd.png</file> |
||||
<file>Icons/flags/cf.png</file> |
||||
<file>Icons/flags/cg.png</file> |
||||
<file>Icons/flags/ch.png</file> |
||||
<file>Icons/flags/ci.png</file> |
||||
<file>Icons/flags/ck.png</file> |
||||
<file>Icons/flags/cl.png</file> |
||||
<file>Icons/flags/cm.png</file> |
||||
<file>Icons/flags/li.png</file> |
||||
<file>Icons/flags/gp.png</file> |
||||
<file>Icons/flags/cn.png</file> |
||||
<file>Icons/flags/co.png</file> |
||||
<file>Icons/flags/kz.png</file> |
||||
<file>Icons/flags/cr.png</file> |
||||
<file>Icons/flags/cs.png</file> |
||||
<file>Icons/flags/cu.png</file> |
||||
<file>Icons/flags/cv.png</file> |
||||
<file>Icons/flags/cx.png</file> |
||||
<file>Icons/flags/cy.png</file> |
||||
<file>Icons/flags/cz.png</file> |
||||
<file>Icons/flags/de.png</file> |
||||
<file>Icons/flags/mm.png</file> |
||||
<file>Icons/flags/dj.png</file> |
||||
<file>Icons/flags/dk.png</file> |
||||
<file>Icons/flags/dm.png</file> |
||||
<file>Icons/flags/do.png</file> |
||||
<file>Icons/flags/dz.png</file> |
||||
<file>Icons/flags/ec.png</file> |
||||
<file>Icons/flags/ee.png</file> |
||||
<file>Icons/flags/eg.png</file> |
||||
<file>Icons/flags/eh.png</file> |
||||
<file>Icons/flags/er.png</file> |
||||
<file>Icons/flags/es.png</file> |
||||
<file>Icons/flags/et.png</file> |
||||
<file>Icons/flags/fi.png</file> |
||||
<file>Icons/flags/fj.png</file> |
||||
<file>Icons/flags/fk.png</file> |
||||
<file>Icons/flags/fm.png</file> |
||||
<file>Icons/flags/fo.png</file> |
||||
<file>Icons/flags/fr.png</file> |
||||
<file>Icons/flags/ga.png</file> |
||||
<file>Icons/flags/gb.png</file> |
||||
<file>Icons/flags/mx.png</file> |
||||
<file>Icons/flags/la.png</file> |
||||
<file>Icons/flags/au.png</file> |
||||
<file>Icons/flags/gd.png</file> |
||||
<file>Icons/flags/ge.png</file> |
||||
<file>Icons/flags/gf.png</file> |
||||
<file>Icons/flags/gh.png</file> |
||||
<file>Icons/flags/gi.png</file> |
||||
<file>Icons/flags/gl.png</file> |
||||
<file>Icons/flags/gm.png</file> |
||||
<file>Icons/flags/gn.png</file> |
||||
<file>Icons/flags/gp.png</file> |
||||
<file>Icons/flags/gq.png</file> |
||||
<file>Icons/flags/gr.png</file> |
||||
<file>Icons/flags/gs.png</file> |
||||
<file>Icons/flags/gt.png</file> |
||||
<file>Icons/flags/gu.png</file> |
||||
<file>Icons/flags/gw.png</file> |
||||
<file>Icons/flags/lc.png</file> |
||||
<file>Icons/flags/st.png</file> |
||||
<file>Icons/flags/nc.png</file> |
||||
<file>Icons/flags/ch.png</file> |
||||
<file>Icons/flags/cd.png</file> |
||||
<file>Icons/flags/mh.png</file> |
||||
<file>Icons/flags/pg.png</file> |
||||
<file>Icons/flags/bh.png</file> |
||||
<file>Icons/flags/kr.png</file> |
||||
<file>Icons/flags/gy.png</file> |
||||
<file>Icons/flags/hk.png</file> |
||||
<file>Icons/flags/hm.png</file> |
||||
<file>Icons/flags/hn.png</file> |
||||
<file>Icons/flags/hr.png</file> |
||||
<file>Icons/flags/ht.png</file> |
||||
<file>Icons/flags/hu.png</file> |
||||
<file>Icons/flags/id.png</file> |
||||
<file>Icons/flags/ie.png</file> |
||||
<file>Icons/flags/il.png</file> |
||||
<file>Icons/flags/in.png</file> |
||||
<file>Icons/flags/io.png</file> |
||||
<file>Icons/flags/iq.png</file> |
||||
<file>Icons/flags/ir.png</file> |
||||
<file>Icons/flags/is.png</file> |
||||
<file>Icons/flags/gh.png</file> |
||||
<file>Icons/flags/mp.png</file> |
||||
<file>Icons/flags/ca.png</file> |
||||
<file>Icons/flags/bi.png</file> |
||||
<file>Icons/flags/yt.png</file> |
||||
<file>Icons/flags/it.png</file> |
||||
<file>Icons/flags/jm.png</file> |
||||
<file>Icons/flags/jo.png</file> |
||||
<file>Icons/flags/jp.png</file> |
||||
<file>Icons/flags/ke.png</file> |
||||
<file>Icons/flags/kg.png</file> |
||||
<file>Icons/flags/kh.png</file> |
||||
<file>Icons/flags/ki.png</file> |
||||
<file>Icons/flags/km.png</file> |
||||
<file>Icons/flags/kn.png</file> |
||||
<file>Icons/flags/ve.png</file> |
||||
<file>Icons/flags/cu.png</file> |
||||
<file>Icons/flags/bs.png</file> |
||||
<file>Icons/flags/rs.png</file> |
||||
<file>Icons/flags/tw.png</file> |
||||
<file>Icons/flags/bd.png</file> |
||||
<file>Icons/flags/pr.png</file> |
||||
<file>Icons/flags/kp.png</file> |
||||
<file>Icons/flags/kr.png</file> |
||||
<file>Icons/flags/kw.png</file> |
||||
<file>Icons/flags/ky.png</file> |
||||
<file>Icons/flags/kz.png</file> |
||||
<file>Icons/flags/la.png</file> |
||||
<file>Icons/flags/lb.png</file> |
||||
<file>Icons/flags/lc.png</file> |
||||
<file>Icons/flags/li.png</file> |
||||
<file>Icons/flags/lk.png</file> |
||||
<file>Icons/flags/sn.png</file> |
||||
<file>Icons/flags/gr.png</file> |
||||
<file>Icons/flags/gm.png</file> |
||||
<file>Icons/flags/na.png</file> |
||||
<file>Icons/flags/om.png</file> |
||||
<file>Icons/flags/tz.png</file> |
||||
<file>Icons/flags/as.png</file> |
||||
<file>Icons/flags/no.png</file> |
||||
<file>Icons/flags/mv.png</file> |
||||
<file>Icons/flags/ki.png</file> |
||||
<file>Icons/flags/eg.png</file> |
||||
<file>Icons/flags/tj.png</file> |
||||
<file>Icons/flags/sj.png</file> |
||||
<file>Icons/flags/fi.png</file> |
||||
<file>Icons/flags/lr.png</file> |
||||
<file>Icons/flags/ls.png</file> |
||||
<file>Icons/flags/lt.png</file> |
||||
<file>Icons/flags/lu.png</file> |
||||
<file>Icons/flags/lv.png</file> |
||||
<file>Icons/flags/cx.png</file> |
||||
<file>Icons/flags/ci.png</file> |
||||
<file>Icons/flags/vi.png</file> |
||||
<file>Icons/flags/be.png</file> |
||||
<file>Icons/flags/mw.png</file> |
||||
<file>Icons/flags/zw.png</file> |
||||
<file>Icons/flags/si.png</file> |
||||
<file>Icons/flags/dm.png</file> |
||||
<file>Icons/flags/jo.png</file> |
||||
<file>Icons/flags/hk.png</file> |
||||
<file>Icons/flags/ly.png</file> |
||||
<file>Icons/flags/ma.png</file> |
||||
<file>Icons/flags/mc.png</file> |
||||
<file>Icons/flags/md.png</file> |
||||
<file>Icons/flags/me.png</file> |
||||
<file>Icons/flags/va.png</file> |
||||
<file>Icons/flags/pm.png</file> |
||||
<file>Icons/flags/qa.png</file> |
||||
<file>Icons/flags/cc.png</file> |
||||
<file>Icons/flags/kh.png</file> |
||||
<file>Icons/flags/id.png</file> |
||||
<file>Icons/flags/ai.png</file> |
||||
<file>Icons/flags/mn.png</file> |
||||
<file>Icons/flags/gd.png</file> |
||||
<file>Icons/flags/mt.png</file> |
||||
<file>Icons/flags/gq.png</file> |
||||
<file>Icons/flags/hr.png</file> |
||||
<file>Icons/flags/sv.png</file> |
||||
<file>Icons/flags/dz.png</file> |
||||
<file>Icons/flags/kg.png</file> |
||||
<file>Icons/flags/gy.png</file> |
||||
<file>Icons/flags/bv.png</file> |
||||
<file>Icons/flags/ag.png</file> |
||||
<file>Icons/flags/hn.png</file> |
||||
<file>Icons/flags/ml.png</file> |
||||
<file>Icons/flags/fo.png</file> |
||||
<file>Icons/flags/pw.png</file> |
||||
<file>Icons/flags/mg.png</file> |
||||
<file>Icons/flags/iq.png</file> |
||||
<file>Icons/flags/jm.png</file> |
||||
<file>Icons/flags/bo.png</file> |
||||
<file>Icons/flags/sk.png</file> |
||||
<file>Icons/flags/sh.png</file> |
||||
<file>Icons/flags/tf.png</file> |
||||
<file>Icons/flags/mh.png</file> |
||||
<file>Icons/flags/mk.png</file> |
||||
<file>Icons/flags/my.png</file> |
||||
<file>Icons/flags/es.png</file> |
||||
<file>Icons/flags/py.png</file> |
||||
<file>Icons/flags/ax.png</file> |
||||
<file>Icons/flags/ls.png</file> |
||||
<file>Icons/flags/tn.png</file> |
||||
<file>Icons/flags/ps.png</file> |
||||
<file>Icons/flags/bn.png</file> |
||||
<file>Icons/flags/dj.png</file> |
||||
<file>Icons/flags/cs.png</file> |
||||
<file>Icons/flags/pl.png</file> |
||||
<file>Icons/flags/cl.png</file> |
||||
<file>Icons/flags/pf.png</file> |
||||
<file>Icons/flags/gi.png</file> |
||||
<file>Icons/flags/bb.png</file> |
||||
<file>Icons/flags/ws.png</file> |
||||
<file>Icons/flags/cy.png</file> |
||||
<file>Icons/flags/pt.png</file> |
||||
<file>Icons/flags/ba.png</file> |
||||
<file>Icons/flags/gl.png</file> |
||||
<file>Icons/flags/ie.png</file> |
||||
<file>Icons/flags/fr.png</file> |
||||
<file>Icons/flags/tm.png</file> |
||||
<file>Icons/flags/er.png</file> |
||||
<file>Icons/flags/cr.png</file> |
||||
<file>Icons/flags/af.png</file> |
||||
<file>Icons/flags/ml.png</file> |
||||
<file>Icons/flags/mm.png</file> |
||||
<file>Icons/flags/mn.png</file> |
||||
<file>Icons/flags/mo.png</file> |
||||
<file>Icons/flags/mp.png</file> |
||||
<file>Icons/flags/mq.png</file> |
||||
<file>Icons/flags/mr.png</file> |
||||
<file>Icons/flags/ms.png</file> |
||||
<file>Icons/flags/mt.png</file> |
||||
<file>Icons/flags/mu.png</file> |
||||
<file>Icons/flags/lu.png</file> |
||||
<file>Icons/flags/mv.png</file> |
||||
<file>Icons/flags/mw.png</file> |
||||
<file>Icons/flags/mx.png</file> |
||||
<file>Icons/flags/my.png</file> |
||||
<file>Icons/flags/mz.png</file> |
||||
<file>Icons/flags/na.png</file> |
||||
<file>Icons/flags/nc.png</file> |
||||
<file>Icons/flags/ne.png</file> |
||||
<file>Icons/flags/nf.png</file> |
||||
<file>Icons/flags/ng.png</file> |
||||
<file>Icons/flags/ni.png</file> |
||||
<file>Icons/flags/nl.png</file> |
||||
<file>Icons/flags/no.png</file> |
||||
<file>Icons/flags/np.png</file> |
||||
<file>Icons/flags/nr.png</file> |
||||
<file>Icons/flags/nu.png</file> |
||||
<file>Icons/flags/nz.png</file> |
||||
<file>Icons/flags/om.png</file> |
||||
<file>Icons/flags/pa.png</file> |
||||
<file>Icons/flags/pe.png</file> |
||||
<file>Icons/flags/pf.png</file> |
||||
<file>Icons/flags/pg.png</file> |
||||
<file>Icons/flags/ph.png</file> |
||||
<file>Icons/flags/pk.png</file> |
||||
<file>Icons/flags/am.png</file> |
||||
<file>Icons/flags/ar.png</file> |
||||
<file>Icons/flags/uy.png</file> |
||||
<file>Icons/flags/hu.png</file> |
||||
<file>Icons/flags/pl.png</file> |
||||
<file>Icons/flags/pm.png</file> |
||||
<file>Icons/flags/pn.png</file> |
||||
<file>Icons/flags/gf.png</file> |
||||
<file>Icons/flags/ir.png</file> |
||||
<file>Icons/flags/pe.png</file> |
||||
<file>Icons/flags/nu.png</file> |
||||
<file>Icons/flags/pr.png</file> |
||||
<file>Icons/flags/ps.png</file> |
||||
<file>Icons/flags/pt.png</file> |
||||
<file>Icons/flags/pw.png</file> |
||||
<file>Icons/flags/py.png</file> |
||||
<file>Icons/flags/qa.png</file> |
||||
<file>Icons/flags/re.png</file> |
||||
<file>Icons/flags/ro.png</file> |
||||
<file>Icons/flags/mo.png</file> |
||||
<file>Icons/flags/za.png</file> |
||||
<file>Icons/flags/ky.png</file> |
||||
<file>Icons/flags/zm.png</file> |
||||
<file>Icons/flags/rs.png</file> |
||||
<file>Icons/flags/ru.png</file> |
||||
<file>Icons/flags/rw.png</file> |
||||
<file>Icons/flags/sa.png</file> |
||||
<file>Icons/flags/sb.png</file> |
||||
<file>Icons/flags/sc.png</file> |
||||
<file>Icons/flags/sd.png</file> |
||||
<file>Icons/flags/se.png</file> |
||||
<file>Icons/flags/il.png</file> |
||||
<file>Icons/flags/fm.png</file> |
||||
<file>Icons/flags/sg.png</file> |
||||
<file>Icons/flags/sh.png</file> |
||||
<file>Icons/flags/si.png</file> |
||||
<file>Icons/flags/sj.png</file> |
||||
<file>Icons/flags/sk.png</file> |
||||
<file>Icons/flags/sl.png</file> |
||||
<file>Icons/flags/sm.png</file> |
||||
<file>Icons/flags/sn.png</file> |
||||
<file>Icons/flags/so.png</file> |
||||
<file>Icons/flags/sr.png</file> |
||||
<file>Icons/flags/pa.png</file> |
||||
<file>Icons/flags/cv.png</file> |
||||
<file>Icons/flags/tc.png</file> |
||||
<file>Icons/flags/an.png</file> |
||||
<file>Icons/flags/st.png</file> |
||||
<file>Icons/flags/sv.png</file> |
||||
<file>Icons/flags/sy.png</file> |
||||
<file>Icons/flags/sz.png</file> |
||||
<file>Icons/flags/io.png</file> |
||||
<file>Icons/flags/rw.png</file> |
||||
<file>Icons/flags/eh.png</file> |
||||
<file>Icons/flags/cf.png</file> |
||||
<file>Icons/flags/gt.png</file> |
||||
<file>Icons/flags/al.png</file> |
||||
<file>Icons/flags/ug.png</file> |
||||
<file>Icons/flags/tc.png</file> |
||||
<file>Icons/flags/td.png</file> |
||||
<file>Icons/flags/at.png</file> |
||||
<file>Icons/flags/vc.png</file> |
||||
<file>Icons/flags/tf.png</file> |
||||
<file>Icons/flags/tg.png</file> |
||||
<file>Icons/flags/th.png</file> |
||||
<file>Icons/flags/tj.png</file> |
||||
<file>Icons/flags/tk.png</file> |
||||
<file>Icons/flags/bg.png</file> |
||||
<file>Icons/flags/tl.png</file> |
||||
<file>Icons/flags/tm.png</file> |
||||
<file>Icons/flags/tn.png</file> |
||||
<file>Icons/flags/to.png</file> |
||||
<file>Icons/flags/tr.png</file> |
||||
<file>Icons/flags/tt.png</file> |
||||
<file>Icons/flags/tv.png</file> |
||||
<file>Icons/flags/tw.png</file> |
||||
<file>Icons/flags/tz.png</file> |
||||
<file>Icons/flags/ua.png</file> |
||||
<file>Icons/flags/ug.png</file> |
||||
<file>Icons/flags/um.png</file> |
||||
<file>Icons/flags/us.png</file> |
||||
<file>Icons/flags/uy.png</file> |
||||
<file>Icons/flags/uz.png</file> |
||||
<file>Icons/flags/va.png</file> |
||||
<file>Icons/flags/vc.png</file> |
||||
<file>Icons/flags/ve.png</file> |
||||
<file>Icons/flags/vg.png</file> |
||||
<file>Icons/flags/vi.png</file> |
||||
<file>Icons/flags/vn.png</file> |
||||
<file>Icons/flags/vu.png</file> |
||||
<file>Icons/flags/wf.png</file> |
||||
<file>Icons/oxygen/preferences-system.png</file> |
||||
<file>Icons/oxygen/unavailable.png</file> |
||||
<file>Icons/oxygen/document-edit-verify.png</file> |
||||
<file>Icons/oxygen/list-remove.png</file> |
||||
<file>Icons/flags/ws.png</file> |
||||
<file>Icons/flags/ye.png</file> |
||||
<file>Icons/flags/yt.png</file> |
||||
<file>Icons/flags/za.png</file> |
||||
<file>Icons/flags/zm.png</file> |
||||
<file>Icons/flags/zw.png</file> |
||||
<file>Icons/oxygen/application-exit.png</file> |
||||
<file>Icons/oxygen/application-rss+xml.png</file> |
||||
<file>Icons/oxygen/application-x-mswinurl.png</file> |
||||
<file>Icons/oxygen/chronometer.png</file> |
||||
<file>Icons/oxygen/dialog-cancel.png</file> |
||||
<file>Icons/oxygen/dialog-information.png</file> |
||||
<file>Icons/oxygen/dialog-warning.png</file> |
||||
<file>Icons/oxygen/mail-folder-inbox.png</file> |
||||
<file>Icons/oxygen/document-edit-verify.png</file> |
||||
<file>Icons/oxygen/document-edit.png</file> |
||||
<file>Icons/oxygen/document-encrypt.png</file> |
||||
<file>Icons/oxygen/document-import.png</file> |
||||
<file>Icons/oxygen/document-new.png</file> |
||||
<file>Icons/oxygen/document-properties.png</file> |
||||
<file>Icons/oxygen/document-save.png</file> |
||||
<file>Icons/oxygen/download.png</file> |
||||
<file>Icons/oxygen/edit-clear-history.png</file> |
||||
<file>Icons/oxygen/edit-clear.png</file> |
||||
<file>Icons/oxygen/edit-copy.png</file> |
||||
<file>Icons/oxygen/edit-cut.png</file> |
||||
<file>Icons/oxygen/edit-delete.png</file> |
||||
<file>Icons/oxygen/edit-find-user.png</file> |
||||
<file>Icons/oxygen/edit-find.png</file> |
||||
<file>Icons/oxygen/edit-paste.png</file> |
||||
<file>Icons/oxygen/edit-rename.png</file> |
||||
<file>Icons/oxygen/folder-documents.png</file> |
||||
<file>Icons/oxygen/document-edit.png</file> |
||||
<file>Icons/oxygen/security-low.png</file> |
||||
<file>Icons/oxygen/folder-new.png</file> |
||||
<file>Icons/oxygen/folder-remote.png</file> |
||||
<file>Icons/oxygen/gear.png</file> |
||||
<file>Icons/oxygen/gear32.png</file> |
||||
<file>Icons/oxygen/go-down.png</file> |
||||
<file>Icons/oxygen/go-up.png</file> |
||||
<file>Icons/oxygen/help-about.png</file> |
||||
<file>Icons/oxygen/help-contents.png</file> |
||||
<file>Icons/oxygen/inode-directory.png</file> |
||||
<file>Icons/oxygen/insert-link.png</file> |
||||
<file>Icons/oxygen/network-wired.png</file> |
||||
<file>Icons/oxygen/list-add.png</file> |
||||
<file>Icons/oxygen/list-remove.png</file> |
||||
<file>Icons/oxygen/mail-folder-inbox.png</file> |
||||
<file>Icons/oxygen/mail-mark-read.png</file> |
||||
<file>Icons/oxygen/go-up.png</file> |
||||
<file>Icons/oxygen/application-exit.png</file> |
||||
<file>Icons/oxygen/edit-rename.png</file> |
||||
<file>Icons/oxygen/edit-cut.png</file> |
||||
<file>Icons/oxygen/gear32.png</file> |
||||
<file>Icons/oxygen/media-playback-start.png</file> |
||||
<file>Icons/oxygen/user-group-delete.png</file> |
||||
<file>Icons/oxygen/edit-find-user.png</file> |
||||
<file>Icons/oxygen/media-playback-pause.png</file> |
||||
<file>Icons/oxygen/media-playback-start.png</file> |
||||
<file>Icons/oxygen/network-server.png</file> |
||||
<file>Icons/oxygen/network-wired.png</file> |
||||
<file>Icons/oxygen/object-locked.png</file> |
||||
<file>Icons/oxygen/preferences-desktop.png</file> |
||||
<file>Icons/oxygen/preferences-other.png</file> |
||||
<file>Icons/oxygen/preferences-system-network.png</file> |
||||
<file>Icons/oxygen/preferences-system.png</file> |
||||
<file>Icons/oxygen/preferences-web-browser-cookies.png</file> |
||||
<file>Icons/oxygen/security-high.png</file> |
||||
<file>Icons/oxygen/security-low.png</file> |
||||
<file>Icons/oxygen/services.png</file> |
||||
<file>Icons/oxygen/tab-close.png</file> |
||||
<file>Icons/oxygen/inode-directory.png</file> |
||||
<file>Icons/oxygen/task-attention.png</file> |
||||
<file>Icons/oxygen/text-plain.png</file> |
||||
<file>Icons/oxygen/tools-report-bug.png</file> |
||||
<file>Icons/oxygen/unavailable.png</file> |
||||
<file>Icons/oxygen/user-group-delete.png</file> |
||||
<file>Icons/oxygen/user-group-new.png</file> |
||||
<file>Icons/oxygen/view-calendar-journal.png</file> |
||||
<file>Icons/oxygen/view-categories.png</file> |
||||
<file>Icons/oxygen/view-filter.png</file> |
||||
<file>Icons/oxygen/services.png</file> |
||||
<file>Icons/oxygen/view-preview.png</file> |
||||
<file>Icons/oxygen/view-refresh.png</file> |
||||
<file>Icons/oxygen/text-plain.png</file> |
||||
<file>Icons/oxygen/edit-delete.png</file> |
||||
<file>Icons/oxygen/chronometer.png</file> |
||||
<file>Icons/oxygen/dialog-cancel.png</file> |
||||
<file>Icons/oxygen/task-attention.png</file> |
||||
<file>Icons/oxygen/preferences-system-network.png</file> |
||||
<file>Icons/oxygen/document-properties.png</file> |
||||
<file>Icons/oxygen/user-group-new.png</file> |
||||
<file>Icons/oxygen/security-high.png</file> |
||||
<file>Icons/oxygen/network-server.png</file> |
||||
<file>Icons/oxygen/wallet-open.png</file> |
||||
<file>Icons/oxygen/preferences-web-browser-cookies.png</file> |
||||
<file>Icons/oxygen/list-add.png</file> |
||||
<file>Icons/oxygen/edit-paste.png</file> |
||||
<file>Icons/oxygen/folder-remote.png</file> |
||||
<file>Icons/oxygen/help-about.png</file> |
||||
<file>Icons/oxygen/document-save.png</file> |
||||
<file>Icons/oxygen/gear.png</file> |
||||
<file>Icons/oxygen/view-categories.png</file> |
||||
<file>Icons/oxygen/document-new.png</file> |
||||
<file>Icons/oxygen/dialog-information.png</file> |
||||
<file>Icons/oxygen/preferences-other.png</file> |
||||
<file>Icons/oxygen/object-locked.png</file> |
||||
<file>Icons/oxygen/view-calendar-journal.png</file> |
||||
<file>Icons/oxygen/application-rss+xml.png</file> |
||||
<file>Icons/oxygen/document-encrypt.png</file> |
||||
<file>Icons/oxygen/help-contents.png</file> |
||||
<file>Icons/oxygen/preferences-desktop.png</file> |
||||
<file>Icons/oxygen/application-x-mswinurl.png</file> |
||||
<file>Icons/oxygen/go-down.png</file> |
||||
<file>Icons/oxygen/document-import.png</file> |
||||
<file>Icons/oxygen/download.png</file> |
||||
<file>Icons/oxygen/edit-find.png</file> |
||||
<file>Icons/oxygen/edit-clear.png</file> |
||||
<file>Icons/oxygen/webui.png</file> |
||||
<file>Icons/oxygen/folder-new.png</file> |
||||
<file>Icons/skin/arrow-right.gif</file> |
||||
<file>Icons/skin/bg-handle-horizontal.gif</file> |
||||
<file>Icons/skin/checking.png</file> |
||||
<file>Icons/skin/connected.png</file> |
||||
<file>Icons/skin/disconnected.png</file> |
||||
<file>Icons/skin/download.png</file> |
||||
<file>Icons/skin/downloading.png</file> |
||||
<file>Icons/skin/error.png</file> |
||||
<file>Icons/skin/filteractive.png</file> |
||||
<file>Icons/skin/filterall.png</file> |
||||
<file>Icons/skin/filterinactive.png</file> |
||||
<file>Icons/skin/firewalled.png</file> |
||||
<file>Icons/skin/handle-icon-horizontal.gif</file> |
||||
<file>Icons/skin/handle-icon.gif</file> |
||||
<file>Icons/skin/knob.gif</file> |
||||
<file>Icons/skin/mascot.png</file> |
||||
<file>Icons/skin/paused.png</file> |
||||
<file>Icons/skin/qbittorrent16.png</file> |
||||
<file>Icons/skin/qbittorrent22.png</file> |
||||
<file>Icons/skin/qbittorrent32.png</file> |
||||
<file>Icons/skin/qbittorrent_mono_dark.png</file> |
||||
<file>Icons/skin/qbittorrent_mono_light.png</file> |
||||
<file>Icons/skin/queued.png</file> |
||||
<file>Icons/skin/ratio.png</file> |
||||
<file>Icons/skin/seeding.png</file> |
||||
<file>Icons/skin/slider-area.gif</file> |
||||
<file>Icons/skin/splash.png</file> |
||||
<file>Icons/skin/stalledDL.png</file> |
||||
<file>Icons/skin/stalledUP.png</file> |
||||
<file>Icons/skin/tabs.gif</file> |
||||
<file>Icons/skin/toolbox-divider.gif</file> |
||||
<file>Icons/skin/uploading.png</file> |
||||
</qresource> |
||||
</RCC> |
@ -1,41 +1,41 @@
@@ -1,41 +1,41 @@
|
||||
<!DOCTYPE RCC><RCC version="1.0"> |
||||
<qresource> |
||||
<file>lang/qbittorrent_nl.qm</file> |
||||
<file>lang/qbittorrent_hu.qm</file> |
||||
<file>lang/qbittorrent_ru.qm</file> |
||||
<file>lang/qbittorrent_zh_TW.qm</file> |
||||
<file>lang/qbittorrent_tr.qm</file> |
||||
<file>lang/qbittorrent_fi.qm</file> |
||||
<file>lang/qbittorrent_sk.qm</file> |
||||
<file>lang/qbittorrent_ja.qm</file> |
||||
<file>lang/qbittorrent_el.qm</file> |
||||
<file>lang/qbittorrent_ar.qm</file> |
||||
<file>lang/qbittorrent_be.qm</file> |
||||
<file>lang/qbittorrent_bg.qm</file> |
||||
<file>lang/qbittorrent_ca.qm</file> |
||||
<file>lang/qbittorrent_pt.qm</file> |
||||
<file>lang/qbittorrent_it.qm</file> |
||||
<file>lang/qbittorrent_fr.qm</file> |
||||
<file>lang/qbittorrent_uk.qm</file> |
||||
<file>lang/qbittorrent_zh.qm</file> |
||||
<file>lang/qbittorrent_lt.qm</file> |
||||
<file>lang/qbittorrent_ko.qm</file> |
||||
<file>lang/qbittorrent_nb.qm</file> |
||||
<file>lang/qbittorrent_sv.qm</file> |
||||
<file>lang/qbittorrent_cs.qm</file> |
||||
<file>lang/qbittorrent_da.qm</file> |
||||
<file>lang/qbittorrent_de.qm</file> |
||||
<file>lang/qbittorrent_el.qm</file> |
||||
<file>lang/qbittorrent_en.qm</file> |
||||
<file>lang/qbittorrent_es.qm</file> |
||||
<file>lang/qbittorrent_eu.qm</file> |
||||
<file>lang/qbittorrent_fi.qm</file> |
||||
<file>lang/qbittorrent_fr.qm</file> |
||||
<file>lang/qbittorrent_gl.qm</file> |
||||
<file>lang/qbittorrent_sr.qm</file> |
||||
<file>lang/qbittorrent_pt_BR.qm</file> |
||||
<file>lang/qbittorrent_da.qm</file> |
||||
<file>lang/qbittorrent_cs.qm</file> |
||||
<file>lang/qbittorrent_he.qm</file> |
||||
<file>lang/qbittorrent_hr.qm</file> |
||||
<file>lang/qbittorrent_hu.qm</file> |
||||
<file>lang/qbittorrent_hy.qm</file> |
||||
<file>lang/qbittorrent_it.qm</file> |
||||
<file>lang/qbittorrent_ja.qm</file> |
||||
<file>lang/qbittorrent_ka.qm</file> |
||||
<file>lang/qbittorrent_ko.qm</file> |
||||
<file>lang/qbittorrent_lt.qm</file> |
||||
<file>lang/qbittorrent_nb.qm</file> |
||||
<file>lang/qbittorrent_nl.qm</file> |
||||
<file>lang/qbittorrent_pl.qm</file> |
||||
<file>lang/qbittorrent_bg.qm</file> |
||||
<file>lang/qbittorrent_ar.qm</file> |
||||
<file>lang/qbittorrent_es.qm</file> |
||||
<file>lang/qbittorrent_en.qm</file> |
||||
<file>lang/qbittorrent_hr.qm</file> |
||||
<file>lang/qbittorrent_pt.qm</file> |
||||
<file>lang/qbittorrent_pt_BR.qm</file> |
||||
<file>lang/qbittorrent_ro.qm</file> |
||||
<file>lang/qbittorrent_ka.qm</file> |
||||
<file>lang/qbittorrent_be.qm</file> |
||||
<file>lang/qbittorrent_eu.qm</file> |
||||
<file>lang/qbittorrent_he.qm</file> |
||||
<file>lang/qbittorrent_ru.qm</file> |
||||
<file>lang/qbittorrent_sk.qm</file> |
||||
<file>lang/qbittorrent_sr.qm</file> |
||||
<file>lang/qbittorrent_sv.qm</file> |
||||
<file>lang/qbittorrent_tr.qm</file> |
||||
<file>lang/qbittorrent_uk.qm</file> |
||||
<file>lang/qbittorrent_zh.qm</file> |
||||
<file>lang/qbittorrent_zh_TW.qm</file> |
||||
</qresource> |
||||
</RCC> |
||||
</RCC> |
@ -0,0 +1,371 @@
@@ -0,0 +1,371 @@
|
||||
# Copyright (c) 2011 The Chromium Authors. All rights reserved. |
||||
# Use of this source code is governed by a BSD-style license that can be |
||||
# found in the LICENSE file. |
||||
|
||||
"""Collection of functions and classes to fix various encoding problems on |
||||
multiple platforms with python. |
||||
""" |
||||
|
||||
import codecs |
||||
import locale |
||||
import os |
||||
import sys |
||||
|
||||
|
||||
# Prevents initializing multiple times. |
||||
_SYS_ARGV_PROCESSED = False |
||||
|
||||
|
||||
def complain(message): |
||||
"""If any exception occurs in this file, we'll probably try to print it |
||||
on stderr, which makes for frustrating debugging if stderr is directed |
||||
to our wrapper. So be paranoid about catching errors and reporting them |
||||
to sys.__stderr__, so that the user has a higher chance to see them. |
||||
""" |
||||
print >> sys.__stderr__, ( |
||||
isinstance(message, str) and message or repr(message)) |
||||
|
||||
|
||||
def fix_default_encoding(): |
||||
"""Forces utf8 solidly on all platforms. |
||||
|
||||
By default python execution environment is lazy and defaults to ascii |
||||
encoding. |
||||
|
||||
http://uucode.com/blog/2007/03/23/shut-up-you-dummy-7-bit-python/ |
||||
""" |
||||
if sys.getdefaultencoding() == 'utf-8': |
||||
return False |
||||
|
||||
# Regenerate setdefaultencoding. |
||||
reload(sys) |
||||
# Module 'sys' has no 'setdefaultencoding' member |
||||
# pylint: disable=E1101 |
||||
sys.setdefaultencoding('utf-8') |
||||
for attr in dir(locale): |
||||
if attr[0:3] != 'LC_': |
||||
continue |
||||
aref = getattr(locale, attr) |
||||
try: |
||||
locale.setlocale(aref, '') |
||||
except locale.Error: |
||||
continue |
||||
try: |
||||
lang = locale.getlocale(aref)[0] |
||||
except (TypeError, ValueError): |
||||
continue |
||||
if lang: |
||||
try: |
||||
locale.setlocale(aref, (lang, 'UTF-8')) |
||||
except locale.Error: |
||||
os.environ[attr] = lang + '.UTF-8' |
||||
try: |
||||
locale.setlocale(locale.LC_ALL, '') |
||||
except locale.Error: |
||||
pass |
||||
return True |
||||
|
||||
|
||||
############################### |
||||
# Windows specific |
||||
|
||||
|
||||
def fix_win_sys_argv(encoding): |
||||
"""Converts sys.argv to 'encoding' encoded string. |
||||
|
||||
utf-8 is recommended. |
||||
|
||||
Works around <http://bugs.python.org/issue2128>. |
||||
""" |
||||
global _SYS_ARGV_PROCESSED |
||||
if _SYS_ARGV_PROCESSED: |
||||
return False |
||||
|
||||
# These types are available on linux but not Mac. |
||||
# pylint: disable=E0611,F0401 |
||||
from ctypes import byref, c_int, POINTER, windll, WINFUNCTYPE |
||||
from ctypes.wintypes import LPCWSTR, LPWSTR |
||||
|
||||
# <http://msdn.microsoft.com/en-us/library/ms683156.aspx> |
||||
GetCommandLineW = WINFUNCTYPE(LPWSTR)(('GetCommandLineW', windll.kernel32)) |
||||
# <http://msdn.microsoft.com/en-us/library/bb776391.aspx> |
||||
CommandLineToArgvW = WINFUNCTYPE(POINTER(LPWSTR), LPCWSTR, POINTER(c_int))( |
||||
('CommandLineToArgvW', windll.shell32)) |
||||
|
||||
argc = c_int(0) |
||||
argv_unicode = CommandLineToArgvW(GetCommandLineW(), byref(argc)) |
||||
argv = [ |
||||
argv_unicode[i].encode(encoding, 'replace') |
||||
for i in xrange(0, argc.value)] |
||||
|
||||
if not hasattr(sys, 'frozen'): |
||||
# If this is an executable produced by py2exe or bbfreeze, then it |
||||
# will have been invoked directly. Otherwise, unicode_argv[0] is the |
||||
# Python interpreter, so skip that. |
||||
argv = argv[1:] |
||||
|
||||
# Also skip option arguments to the Python interpreter. |
||||
while len(argv) > 0: |
||||
arg = argv[0] |
||||
if not arg.startswith(u'-') or arg == u'-': |
||||
break |
||||
argv = argv[1:] |
||||
if arg == u'-m': |
||||
# sys.argv[0] should really be the absolute path of the |
||||
# module source, but never mind. |
||||
break |
||||
if arg == u'-c': |
||||
argv[0] = u'-c' |
||||
break |
||||
sys.argv = argv |
||||
_SYS_ARGV_PROCESSED = True |
||||
return True |
||||
|
||||
|
||||
def fix_win_codec(): |
||||
"""Works around <http://bugs.python.org/issue6058>.""" |
||||
# <http://msdn.microsoft.com/en-us/library/dd317756.aspx> |
||||
try: |
||||
codecs.lookup('cp65001') |
||||
return False |
||||
except LookupError: |
||||
codecs.register( |
||||
lambda name: name == 'cp65001' and codecs.lookup('utf-8') or None) |
||||
return True |
||||
|
||||
|
||||
class WinUnicodeOutputBase(object): |
||||
"""Base class to adapt sys.stdout or sys.stderr to behave correctly on |
||||
Windows. |
||||
|
||||
Setting encoding to utf-8 is recommended. |
||||
""" |
||||
def __init__(self, fileno, name, encoding): |
||||
# Corresponding file handle. |
||||
self._fileno = fileno |
||||
self.encoding = encoding |
||||
self.name = name |
||||
|
||||
self.closed = False |
||||
self.softspace = False |
||||
self.mode = 'w' |
||||
|
||||
@staticmethod |
||||
def isatty(): |
||||
return False |
||||
|
||||
def close(self): |
||||
# Don't really close the handle, that would only cause problems. |
||||
self.closed = True |
||||
|
||||
def fileno(self): |
||||
return self._fileno |
||||
|
||||
def flush(self): |
||||
raise NotImplementedError() |
||||
|
||||
def write(self, text): |
||||
raise NotImplementedError() |
||||
|
||||
def writelines(self, lines): |
||||
try: |
||||
for line in lines: |
||||
self.write(line) |
||||
except Exception, e: |
||||
complain('%s.writelines: %r' % (self.name, e)) |
||||
raise |
||||
|
||||
|
||||
class WinUnicodeConsoleOutput(WinUnicodeOutputBase): |
||||
"""Output adapter to a Windows Console. |
||||
|
||||
Understands how to use the win32 console API. |
||||
""" |
||||
def __init__(self, console_handle, fileno, stream_name, encoding): |
||||
super(WinUnicodeConsoleOutput, self).__init__( |
||||
fileno, '<Unicode console %s>' % stream_name, encoding) |
||||
# Handle to use for WriteConsoleW |
||||
self._console_handle = console_handle |
||||
|
||||
# Loads the necessary function. |
||||
# These types are available on linux but not Mac. |
||||
# pylint: disable=E0611,F0401 |
||||
from ctypes import byref, GetLastError, POINTER, windll, WINFUNCTYPE |
||||
from ctypes.wintypes import BOOL, DWORD, HANDLE, LPWSTR |
||||
from ctypes.wintypes import LPVOID # pylint: disable=E0611 |
||||
|
||||
self._DWORD = DWORD |
||||
self._byref = byref |
||||
|
||||
# <http://msdn.microsoft.com/en-us/library/ms687401.aspx> |
||||
self._WriteConsoleW = WINFUNCTYPE( |
||||
BOOL, HANDLE, LPWSTR, DWORD, POINTER(DWORD), LPVOID)( |
||||
('WriteConsoleW', windll.kernel32)) |
||||
self._GetLastError = GetLastError |
||||
|
||||
def flush(self): |
||||
# No need to flush the console since it's immediate. |
||||
pass |
||||
|
||||
def write(self, text): |
||||
try: |
||||
if not isinstance(text, unicode): |
||||
# Convert to unicode. |
||||
text = str(text).decode(self.encoding, 'replace') |
||||
remaining = len(text) |
||||
while remaining > 0: |
||||
n = self._DWORD(0) |
||||
# There is a shorter-than-documented limitation on the length of the |
||||
# string passed to WriteConsoleW. See |
||||
# <http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1232>. |
||||
retval = self._WriteConsoleW( |
||||
self._console_handle, text, |
||||
min(remaining, 10000), |
||||
self._byref(n), None) |
||||
if retval == 0 or n.value == 0: |
||||
raise IOError( |
||||
'WriteConsoleW returned %r, n.value = %r, last error = %r' % ( |
||||
retval, n.value, self._GetLastError())) |
||||
remaining -= n.value |
||||
if not remaining: |
||||
break |
||||
text = text[n.value:] |
||||
except Exception, e: |
||||
complain('%s.write: %r' % (self.name, e)) |
||||
raise |
||||
|
||||
|
||||
class WinUnicodeOutput(WinUnicodeOutputBase): |
||||
"""Output adaptor to a file output on Windows. |
||||
|
||||
If the standard FileWrite function is used, it will be encoded in the current |
||||
code page. WriteConsoleW() permits writting any character. |
||||
""" |
||||
def __init__(self, stream, fileno, encoding): |
||||
super(WinUnicodeOutput, self).__init__( |
||||
fileno, '<Unicode redirected %s>' % stream.name, encoding) |
||||
# Output stream |
||||
self._stream = stream |
||||
|
||||
# Flush right now. |
||||
self.flush() |
||||
|
||||
def flush(self): |
||||
try: |
||||
self._stream.flush() |
||||
except Exception, e: |
||||
complain('%s.flush: %r from %r' % (self.name, e, self._stream)) |
||||
raise |
||||
|
||||
def write(self, text): |
||||
try: |
||||
if isinstance(text, unicode): |
||||
# Replace characters that cannot be printed instead of failing. |
||||
text = text.encode(self.encoding, 'replace') |
||||
self._stream.write(text) |
||||
except Exception, e: |
||||
complain('%s.write: %r' % (self.name, e)) |
||||
raise |
||||
|
||||
|
||||
def win_handle_is_a_console(handle): |
||||
"""Returns True if a Windows file handle is a handle to a console.""" |
||||
# These types are available on linux but not Mac. |
||||
# pylint: disable=E0611,F0401 |
||||
from ctypes import byref, POINTER, windll, WINFUNCTYPE |
||||
from ctypes.wintypes import BOOL, DWORD, HANDLE |
||||
|
||||
FILE_TYPE_CHAR = 0x0002 |
||||
FILE_TYPE_REMOTE = 0x8000 |
||||
INVALID_HANDLE_VALUE = DWORD(-1).value |
||||
|
||||
# <http://msdn.microsoft.com/en-us/library/ms683167.aspx> |
||||
GetConsoleMode = WINFUNCTYPE(BOOL, HANDLE, POINTER(DWORD))( |
||||
('GetConsoleMode', windll.kernel32)) |
||||
# <http://msdn.microsoft.com/en-us/library/aa364960.aspx> |
||||
GetFileType = WINFUNCTYPE(DWORD, DWORD)(('GetFileType', windll.kernel32)) |
||||
|
||||
# GetStdHandle returns INVALID_HANDLE_VALUE, NULL, or a valid handle. |
||||
if handle == INVALID_HANDLE_VALUE or handle is None: |
||||
return False |
||||
return ( |
||||
(GetFileType(handle) & ~FILE_TYPE_REMOTE) == FILE_TYPE_CHAR and |
||||
GetConsoleMode(handle, byref(DWORD()))) |
||||
|
||||
|
||||
def win_get_unicode_stream(stream, excepted_fileno, output_handle, encoding): |
||||
"""Returns a unicode-compatible stream. |
||||
|
||||
This function will return a direct-Console writing object only if: |
||||
- the file number is the expected console file number |
||||
- the handle the expected file handle |
||||
- the 'real' handle is in fact a handle to a console. |
||||
""" |
||||
old_fileno = getattr(stream, 'fileno', lambda: None)() |
||||
if old_fileno == excepted_fileno: |
||||
# These types are available on linux but not Mac. |
||||
# pylint: disable=E0611,F0401 |
||||
from ctypes import windll, WINFUNCTYPE |
||||
from ctypes.wintypes import DWORD, HANDLE |
||||
|
||||
# <http://msdn.microsoft.com/en-us/library/ms683231.aspx> |
||||
GetStdHandle = WINFUNCTYPE(HANDLE, DWORD)(('GetStdHandle', windll.kernel32)) |
||||
|
||||
real_output_handle = GetStdHandle(DWORD(output_handle)) |
||||
if win_handle_is_a_console(real_output_handle): |
||||
# It's a console. |
||||
return WinUnicodeConsoleOutput( |
||||
real_output_handle, old_fileno, stream.name, encoding) |
||||
|
||||
# It's something else. Create an auto-encoding stream. |
||||
return WinUnicodeOutput(stream, old_fileno, encoding) |
||||
|
||||
|
||||
def fix_win_console(encoding): |
||||
"""Makes Unicode console output work independently of the current code page. |
||||
|
||||
This also fixes <http://bugs.python.org/issue1602>. |
||||
Credit to Michael Kaplan |
||||
<http://blogs.msdn.com/b/michkap/archive/2010/04/07/9989346.aspx> and |
||||
TZOmegaTZIOY |
||||
<http://stackoverflow.com/questions/878972/windows-cmd-encoding-change-causes-python-crash/1432462#1432462>. |
||||
""" |
||||
if (isinstance(sys.stdout, WinUnicodeOutputBase) or |
||||
isinstance(sys.stderr, WinUnicodeOutputBase)): |
||||
return False |
||||
|
||||
try: |
||||
# SetConsoleCP and SetConsoleOutputCP could be used to change the code page |
||||
# but it's not really useful since the code here is using WriteConsoleW(). |
||||
# Also, changing the code page is 'permanent' to the console and needs to be |
||||
# reverted manually. |
||||
# In practice one needs to set the console font to a TTF font to be able to |
||||
# see all the characters but it failed for me in practice. In any case, it |
||||
# won't throw any exception when printing, which is the important part. |
||||
# -11 and -12 are defined in stdio.h |
||||
sys.stdout = win_get_unicode_stream(sys.stdout, 1, -11, encoding) |
||||
sys.stderr = win_get_unicode_stream(sys.stderr, 2, -12, encoding) |
||||
# TODO(maruel): Do sys.stdin with ReadConsoleW(). Albeit the limitation is |
||||
# "It doesn't appear to be possible to read Unicode characters in UTF-8 |
||||
# mode" and this appears to be a limitation of cmd.exe. |
||||
except Exception, e: |
||||
complain('exception %r while fixing up sys.stdout and sys.stderr' % e) |
||||
return True |
||||
|
||||
|
||||
def fix_encoding(): |
||||
"""Fixes various encoding problems on all platforms. |
||||
|
||||
Should be called at the very begining of the process. |
||||
""" |
||||
ret = True |
||||
if sys.platform == 'win32': |
||||
ret &= fix_win_codec() |
||||
|
||||
ret &= fix_default_encoding() |
||||
|
||||
if sys.platform == 'win32': |
||||
encoding = sys.getdefaultencoding() |
||||
ret &= fix_win_sys_argv(encoding) |
||||
ret &= fix_win_console(encoding) |
||||
return ret |
@ -1,55 +1,57 @@
@@ -1,55 +1,57 @@
|
||||
<!DOCTYPE RCC><RCC version="1.0"> |
||||
<qresource> |
||||
<file>nova/fix_encoding.py</file> |
||||
<file>nova/helpers.py</file> |
||||
<file>nova/nova2.py</file> |
||||
<file>nova/nova2dl.py</file> |
||||
<file>nova/novaprinter.py</file> |
||||
<file>nova/socks.py</file> |
||||
<file>nova/nova2dl.py</file> |
||||
<file>nova/helpers.py</file> |
||||
<file>nova/engines/vertor.png</file> |
||||
<file>nova/engines/btdigg.png</file> |
||||
<file>nova/engines/btdigg.py</file> |
||||
<file>nova/engines/btjunkie.png</file> |
||||
<file>nova/engines/btjunkie.py</file> |
||||
<file>nova/engines/extratorrent.png</file> |
||||
<file>nova/engines/extratorrent.py</file> |
||||
<file>nova/engines/isohunt.png</file> |
||||
<file>nova/engines/isohunt.py</file> |
||||
<file>nova/engines/kickasstorrents.png</file> |
||||
<file>nova/engines/kickasstorrents.py</file> |
||||
<file>nova/engines/limetorrents.py</file> |
||||
<file>nova/engines/mininova.png</file> |
||||
<file>nova/engines/mininova.py</file> |
||||
<file>nova/engines/torrentdownloads.png</file> |
||||
<file>nova/engines/isohunt.png</file> |
||||
<file>nova/engines/torrentreactor.py</file> |
||||
<file>nova/engines/btjunkie.png</file> |
||||
<file>nova/engines/extratorrent.py</file> |
||||
<file>nova/engines/piratebay.png</file> |
||||
<file>nova/engines/piratebay.py</file> |
||||
<file>nova/engines/torrentdownloads.png</file> |
||||
<file>nova/engines/torrentdownloads.py</file> |
||||
<file>nova/engines/torrentreactor.png</file> |
||||
<file>nova/engines/isohunt.py</file> |
||||
<file>nova/engines/btdigg.py</file> |
||||
<file>nova/engines/btjunkie.py</file> |
||||
<file>nova/engines/kickasstorrents.py</file> |
||||
<file>nova/engines/extratorrent.png</file> |
||||
<file>nova/engines/piratebay.png</file> |
||||
<file>nova/engines/torrentreactor.py</file> |
||||
<file>nova/engines/vertor.png</file> |
||||
<file>nova/engines/vertor.py</file> |
||||
<file>nova/engines/btdigg.png</file> |
||||
<file>nova3/sgmllib3.py</file> |
||||
<file>nova3/helpers.py</file> |
||||
<file>nova3/nova2.py</file> |
||||
<file>nova3/nova2dl.py</file> |
||||
<file>nova3/novaprinter.py</file> |
||||
<file>nova3/sgmllib3.py</file> |
||||
<file>nova3/socks.py</file> |
||||
<file>nova3/nova2dl.py</file> |
||||
<file>nova3/helpers.py</file> |
||||
<file>nova3/engines/vertor.png</file> |
||||
<file>nova3/engines/btdigg.png</file> |
||||
<file>nova3/engines/btdigg.py</file> |
||||
<file>nova3/engines/btjunkie.png</file> |
||||
<file>nova3/engines/btjunkie.py</file> |
||||
<file>nova3/engines/extratorrent.png</file> |
||||
<file>nova3/engines/extratorrent.py</file> |
||||
<file>nova3/engines/isohunt.png</file> |
||||
<file>nova3/engines/isohunt.py</file> |
||||
<file>nova3/engines/kickasstorrents.png</file> |
||||
<file>nova3/engines/kickasstorrents.py</file> |
||||
<file>nova3/engines/mininova.png</file> |
||||
<file>nova3/engines/mininova.py</file> |
||||
<file>nova3/engines/torrentdownloads.png</file> |
||||
<file>nova3/engines/isohunt.png</file> |
||||
<file>nova3/engines/torrentreactor.py</file> |
||||
<file>nova3/engines/btjunkie.png</file> |
||||
<file>nova3/engines/extratorrent.py</file> |
||||
<file>nova3/engines/piratebay.png</file> |
||||
<file>nova3/engines/piratebay.py</file> |
||||
<file>nova3/engines/torrentdownloads.png</file> |
||||
<file>nova3/engines/torrentdownloads.py</file> |
||||
<file>nova3/engines/torrentreactor.png</file> |
||||
<file>nova3/engines/isohunt.py</file> |
||||
<file>nova3/engines/btdigg.py</file> |
||||
<file>nova3/engines/btjunkie.py</file> |
||||
<file>nova3/engines/kickasstorrents.py</file> |
||||
<file>nova3/engines/extratorrent.png</file> |
||||
<file>nova3/engines/piratebay.png</file> |
||||
<file>nova3/engines/torrentreactor.py</file> |
||||
<file>nova3/engines/vertor.png</file> |
||||
<file>nova3/engines/vertor.py</file> |
||||
<file>nova3/engines/btdigg.png</file> |
||||
</qresource> |
||||
</RCC> |
Loading…
Reference in new issue