# -*-mode: python; coding: utf-8 -*- # # Copyright 2012-2014 Pierre Ossman for Cendio AB. # For more information, see http://www.cendio.com if 82 - 82: Iii1i import os import sys import _thread import re if 87 - 87: Ii % i1i1i1111I . Oo / OooOoo * I1Ii1I1 - I1I import thinlinc . prefix if 81 - 81: i1 + ooOOO / oOo0O00 * i1iiIII111 * IiIIii11Ii __all__ = [ "init" , "has_gtk" , "Gtk" , "Gdk" , "GLib" , "GObject" , "Pango" , "gtk" , "gdk" , "gobject" , "pango" , "factory" , "Wizard" , "EntryDialog" , "linkify_text" , "sanitise_wrap" , "message" , "avoid_center_on_seam" ] if 84 - 84: ooo000 - Ooo0Ooo + iI1iII1I1I1i . IIiIIiIi11I1 if 98 - 98: I11iiIi11i1I % oOO if 31 - 31: i1I has_gtk = False if 9 - 9: IiI11Ii111 / oOo0O00 / IiIIii11Ii - I11iiIi11i1I - iI1iII1I1I1i if 16 - 16: i1i1i1111I / i1iiIII111 if 3 - 3: i1 % i1 % i1i1i1111I . Ii * i1 ii1iI1I = _thread . get_ident ( ) if 28 - 28: i1I / IIiIIiIi11I1 % IIiIIiIi11I1 / I1I - Oo def IIII1i1 ( exc_type , exc_value , exc_traceback , old_hook ) : old_hook ( exc_type , exc_value , exc_traceback ) if 84 - 84: Ii . i1iiIII111 - i1 . I1I / iI1iII1I1I1i % OooOoo if 55 - 55: iI1iII1I1I1i + i1 if _thread . get_ident ( ) != ii1iI1I : return if 10 - 10: Oo % oOO . i1i1i1111I . i1 if 22 - 22: IIiIIiIi11I1 - ooo000 / I1Ii1I1 . ooo000 if Gtk . main_level ( ) == 0 : return if 1 - 1: iI1iII1I1I1i + Ooo0Ooo + oOO * IIiIIiIi11I1 sys . exit ( 1 ) if 20 - 20: I1I + Ii def init ( wmclass = None ) : global Gtk , Gdk , GLib , GObject , Pango global has_gtk if 75 - 75: Ii % i1iiIII111 * Ii . IIiIIiIi11I1 % I11iiIi11i1I % I1Ii1I1 if 8 - 8: I1Ii1I1 . IiI11Ii111 . i1 . Oo - i1I if 32 - 32: Ii % i1i1i1111I % i1I - I11iiIi11i1I % i1iiIII111 if not os . environ . get ( "DISPLAY" , "" ) : return False if 34 - 34: i1iiIII111 * i1 try : import gi if 34 - 34: oOo0O00 / i1iiIII111 - Iii1i . iI1iII1I1I1i if 80 - 80: i1i1i1111I . I1I % ooOOO % IiIIii11Ii / i1i1i1111I if 32 - 32: I1Ii1I1 + oOO - oOo0O00 gi . require_version ( "Gtk" , "3.0" ) gi . require_version ( "Gdk" , "3.0" ) gi . require_version ( "GLib" , "2.0" ) gi . require_version ( "GObject" , "2.0" ) gi . require_version ( "Pango" , "1.0" ) if 79 - 79: Iii1i % oOO * Oo + ooOOO / Oo . oOO from gi . repository import Gtk from gi . repository import Gdk from gi . repository import GLib from gi . repository import GObject from gi . repository import Pango if 20 - 20: IiI11Ii111 + i1iiIII111 / I1I if 88 - 88: I11iiIi11i1I + ooOOO - i1i1i1111I . Ooo0Ooo * Ii + Iii1i if Gtk . check_version ( 3 , 20 , 0 ) is not None : raise RuntimeError if 43 - 43: ooOOO * I1Ii1I1 Oooo0o0oO0 = Gtk . init_check ( [ ] ) [ 0 ] if not Oooo0o0oO0 : raise RuntimeError if 71 - 71: OooOoo - Ii if wmclass is not None : Gdk . set_program_class ( wmclass ) if 40 - 40: IiIIii11Ii . i1 / Oo has_gtk = True if 46 - 46: IiI11Ii111 - OooOoo * I1Ii1I1 / Ooo0Ooo / Iii1i if 23 - 23: Ooo0Ooo + i1 * I1Ii1I1 + Oo * Ii - IIiIIiIi11I1 if 29 - 29: IiIIii11Ii - oOo0O00 if 30 - 30: I1I . ooo000 if 43 - 43: ooOOO . I11iiIi11i1I + ooo000 oOo = sys . excepthook sys . excepthook = lambda o0O , O00oO0oO , I1 : IIII1i1 ( o0O , O00oO0oO , I1 , oOo ) except ImportError : if 69 - 69: I1I * Ooo0Ooo + i1iiIII111 . i1iiIII111 % Oo * oOo0O00 return False except RuntimeError : if 65 - 65: Ooo0Ooo * ooo000 + oOo0O00 return False except ValueError : if 71 - 71: Ooo0Ooo / ooo000 return False if 87 - 87: IiI11Ii111 / oOo0O00 % oOO - oOo0O00 . I1I + Ooo0Ooo if 75 - 75: i1iiIII111 * iI1iII1I1I1i - I1I - IIiIIiIi11I1 % I1Ii1I1 if 85 - 85: oOo0O00 o0Ooo = thinlinc . prefix . get_tl_prefix ( ) + "/share/icons" if 19 - 19: Ii IiII11i11II = [ ] for o00o in [ 16 , 32 , 48 , 64 , 128 ] : try : Ii11I = "%s/thinlinc_%d.png" % ( o0Ooo , o00o ) iIi = Gdk . pixbuf_new_from_file ( Ii11I ) except : iIi = None if 60 - 60: oOO % i1iiIII111 % IiI11Ii111 - I11iiIi11i1I * oOO - iI1iII1I1I1i if iIi is None : try : Ii11I = "%s/thinlinc.svg" % o0Ooo iIi = Gdk . pixbuf_new_from_file_at_size ( Ii11I , o00o , o00o ) except : iIi = None if 21 - 21: iI1iII1I1I1i - i1 + ooOOO * IIiIIiIi11I1 % i1 * ooOOO if iIi is not None : IiII11i11II . append ( iIi ) if 57 - 57: oOo0O00 if IiII11i11II : Gtk . Window . set_default_icon_list ( IiII11i11II ) if 31 - 31: i1iiIII111 + i1i1i1111I % OooOoo if 20 - 20: OooOoo - I1I if 9 - 9: i1iiIII111 - iI1iII1I1I1i % Ii - I1I global factory from . import factory if 54 - 54: Iii1i % ooo000 % Iii1i - IiIIii11Ii global Wizard from . wizard import Wizard if 39 - 39: oOO - oOO * i1 % IIiIIiIi11I1 global EntryDialog from . dialog import EntryDialog if 29 - 29: IIiIIiIi11I1 - ooo000 . i1iiIII111 if 86 - 86: I1Ii1I1 - OooOoo - oOO % ooo000 . i1I % Iii1i if 11 - 11: OooOoo - I1Ii1I1 - ooOOO . i1iiIII111 - iI1iII1I1I1i / i1iiIII111 return True if 44 - 44: Ooo0Ooo + i1i1i1111I + Iii1i - oOO if 7 - 7: i1i1i1111I / Ii * Iii1i if 32 - 32: IiI11Ii111 . OooOoo def linkify_text ( text ) : if not has_gtk : return text if 31 - 31: Oo - i1I IIIi1111iiIi1 = "(https?|ftp)://[0-9a-zA-Z;/?:@&=+$\\.\\-_!~*'()%]+(#[0-9a-zA-Z;/?:@&=+$\\.\\-_!~*'()%]+)?" return re . sub ( "(%s)" % IIIi1111iiIi1 , "\\1" , text ) if 4 - 4: ooo000 % I1I - i1i1i1111I def sanitise_wrap ( text ) : if not has_gtk : return text if 76 - 76: i1 * oOo0O00 . IiI11Ii111 * i1I . IiIIii11Ii . oOO if 55 - 55: i1i1i1111I + i1iiIII111 % Ooo0Ooo . Oo - IiIIii11Ii - iI1iII1I1I1i if 91 - 91: I1Ii1I1 - I11iiIi11i1I if 84 - 84: oOO % iI1iII1I1I1i - Ooo0Ooo if 94 - 94: i1iiIII111 + i1i1i1111I / iI1iII1I1I1i + iI1iII1I1I1i / i1I OO = "" ooOOOO00O = False for ii1 in text : if ii1 == "<" : ooOOOO00O = True if 53 - 53: i1 % IIiIIiIi11I1 * IIiIIiIi11I1 * iI1iII1I1I1i if ooOOOO00O or ii1 . isalnum ( ) or ii1 . isspace ( ) : OO += ii1 else : OO += "\u200d%s\u200d" % ii1 if 3 - 3: oOo0O00 if ii1 == ">" : ooOOOO00O = False if 29 - 29: i1 * i1I + IIiIIiIi11I1 + oOO return OO if 68 - 68: oOO - IiIIii11Ii + iI1iII1I1I1i def Ooo0oO ( mainwin ) : ii1II = Gtk . check_version ( 3 , 22 , 0 ) is None if 93 - 93: IiI11Ii111 % Oo + oOo0O00 / IiIIii11Ii / I1Ii1I1 if ii1II : return mainwin . get_display ( ) . get_n_monitors ( ) else : return mainwin . get_screen ( ) . get_n_monitors ( ) if 39 - 39: oOO if 17 - 17: Ii . oOo0O00 % OooOoo if 82 - 82: Iii1i . oOo0O00 % IIiIIiIi11I1 - iI1iII1I1I1i if 44 - 44: ooOOO . IIiIIiIi11I1 if 15 - 15: ooo000 if 63 - 63: i1I if 81 - 81: OooOoo . i1I / i1i1i1111I + Oo / Ooo0Ooo % IiI11Ii111 if 77 - 77: I11iiIi11i1I / iI1iII1I1I1i - oOo0O00 - Ooo0Ooo % oOo0O00 def avoid_center_on_seam ( mainwin ) : if Ooo0oO ( mainwin ) == 1 : ii1II = Gtk . check_version ( 3 , 22 , 0 ) is None if ii1II : i1iI1 = mainwin . get_display ( ) . get_monitor ( 0 ) ii1ii = i1iI1 . get_geometry ( ) I11IIiiI1 , O0o = ii1ii . width , ii1ii . height else : oo0o0oOo = mainwin . get_screen ( ) I11IIiiI1 , O0o = oo0o0oOo . get_width ( ) , oo0o0oOo . get_height ( ) if 10 - 10: I1Ii1I1 OoO0O0OO0 , O0oOOooo000o0O = I11IIiiI1 , O0o if 74 - 74: I1Ii1I1 if 61 - 61: iI1iII1I1I1i * I1Ii1I1 + Ooo0Ooo % IIiIIiIi11I1 * i1i1i1111I if 61 - 61: i1iiIII111 - Oo + I1Ii1I1 if 43 - 43: IIiIIiIi11I1 * ooo000 + Ii % iI1iII1I1I1i if 12 - 12: i1iiIII111 + ooo000 . I11iiIi11i1I for Iii1I1I1 in range ( 1 , I11IIiiI1 ) : OoO0O0OO0 = I11IIiiI1 / Iii1I1I1 if float ( OoO0O0OO0 ) / O0o < 2.4 : break for Iii1I1I1 in range ( 1 , O0o ) : O0oOOooo000o0O = O0o / Iii1I1I1 if float ( OoO0O0OO0 ) / O0oOOooo000o0O > 1.2 : break oO0oO , Oo0 = mainwin . get_size ( ) i1i1Ii = ( OoO0O0OO0 - oO0oO ) / 2 ii1iI1I11 = ( O0oOOooo000o0O - Oo0 ) / 2 if i1i1Ii > 0 and ii1iI1I11 > 0 : mainwin . move ( i1i1Ii , ii1iI1I11 ) # dd678faae9ac167bc83abf78e5cb2f3f0688d3a3