import os import sys, commands sources = Split(""" prefix.c ipdialog.cpp tickerdialog.cpp settingsdialog.cpp onlinealert.cpp aclineedit.cpp browser.cpp browsers.cpp ignorelist.cpp buddylist.cpp banlist.cpp trustlist.cpp chatpanel.cpp chatroom.cpp chatrooms.cpp chattext.cpp chatticker.cpp codeccombo.cpp iconlistbox.cpp images.cpp recommendsitem.cpp recommendsview.cpp interestlistview.cpp interestlist.cpp interests.cpp mainwin.cpp museeq.cpp marquee.cpp museekdriver.cpp privatechat.cpp privatechats.cpp roomlist.cpp roomlistitem.cpp roomlistview.cpp search.cpp searches.cpp searchfilter.cpp searchlistview.cpp slskdrag.cpp tabwidget.cpp transferlistitem.cpp transferlistview.cpp transfers.cpp userinfo.cpp userinfos.cpp userlistitem.cpp userlistview.cpp usermenu.cpp usertabwidget.cpp util.cpp trayicon.cpp connect.cpp """) all_images = Split(""" away.png away-buddied.png away-banned.png away-trusted.png away-ignored.png connect.png disconnect.png help.png colors.png settings.png exit.png protocol.png privileges.png ip.png refresh.png alert.png comments.png browser.png browser-small.png chatroom.png chatroom-small.png privatechat.png privatechat-small.png search.png search-small.png transfer.png transfer-small.png userinfo.png userinfo-small.png offline.png offline-buddied.png offline-banned.png offline-trusted.png offline-ignored.png online.png online-buddied.png online-banned.png online-trusted.png online-ignored.png tab_remove.png logo.png icon.png """) themes = ["default", "mikelabo-tri", "bluebox", "mikelabo-silk", "birdies"] theme_lists = {} # FIND ICONS IN THEMES for theme in themes: theme_lists[theme] = [] for icon in all_images: if os.path.exists("../../museeq/%s/%s" %(theme, icon) ): theme_lists[theme].append(theme+"/"+icon) scripts = Split(""" uptime.qs nowplaying.qs """) scripts = Split(""" uptime.qs nowplaying.qs """) try: from relaytool import Relay except: from muscons import Relay Import('env') QTDIR = env['QTDIR'] if not QTDIR and os.environ.has_key('QTDIR'): QTDIR = os.environ['QTDIR'] ts_templates= env['MUSEEQTRANSLATIONS'].split(",") tr_dir = "translations/" translations = [] qm_files = [] def make_qm(ts_templates): for lang in ts_templates: translations.append(lang) make_qm(ts_templates) lrelease = "" if ts_templates != []: if os.system(QTDIR+"/bin/"+"lrelease -help 2> /dev/null") == 0: print "Qt translation app 'lrelease' found in",QTDIR+"/bin/" lrelease = QTDIR+"/bin/"+"lrelease" else: if os.system("lrelease -help 2> /dev/null") == 0: print "Qt translation app 'lrelease' found in the path." lrelease = "lrelease" else: print "Qt translation app 'lrelease' not found in the path or QTDIR", QTDIR+"/bin/ Aborting!" sys.exit() else: print "No Museeq translations will be built." def translation_build(target, source, env): print source[0], target[0] ss = "" for s in source: ss += str(s)+" " os.system(lrelease+" "+ str(ss)+" -qm "+ str(target[0])) return 0 def file_copy(target, source, env): open(str(target[0]), 'w').write(open(str(source[0])).read()) def noQt(): sys.stderr.write(""" Couldn't find Qt. Make sure the QTDIR environment variable is set, or disable building of the Qt client by adding MUSEEQ=0 to the scons commandline. """) Exit(1) env_qt = Environment(tools = ['default', 'qt'], CC = env['CC'], CXX = env['CXX'], CCFLAGS = env['CCFLAGS'], QTDIR = QTDIR) env_qt.SConsignFile() env_qt.Append(ENV = {'HOME': os.environ['HOME']}) env_qt.Append(CPPPATH = env['CPPPATH']) env_qt.Append(LIBPATH = env['LIBPATH']) env_qt.Replace(PREFIX = env['PREFIX']) env_qt.Replace(DATADIR = env['DATADIR']) env_qt.Replace(BINDIR = env['BINDIR']) env_qt.Replace(QT_LIB = env['QT_LIB']) env_qt.Replace(QT_MOC = env['QT_MOC']) env_qt.Replace(QT_UIC = env['QT_UIC']) # Hint for building with a statically linked Qt on Linux/XFree86 #env_qt.Append(LIBS = ["Xrender", "Xrandr", "Xcursor", "Xinerama", "Xft", "freetype", "fontconfig", "X11", "m", "SM", "ICE", "dl"]) if env['BINRELOC']: env_qt.Append(CPPDEFINES = { "ENABLE_BINRELOC": 1 }) else: env_qt.Append(CPPDEFINES = { 'DATADIR': '\\"' + env['DATADIR'] + '\\"', 'PREFIX': '\\"' + env['PREFIX'] + '\\"' }) # For OSX (hopefully, this works): if os.path.isdir("/Library/Frameworks/Qt.framework"): env.Append(CPPPATH = "/Library/Frameworks/Qt.framework/Headers") env.Append(LIBPATH = "/Library/Frameworks/Qt.framework") mkspecs = os.path.join(env_qt['QTDIR'], 'mkspecs', os.uname()[0].lower() + '-' + env_qt['CXX']) if os.path.isdir(mkspecs): env_qt.Append(CPPPATH = [mkspecs]) conf = env_qt.Configure() have_qt = conf.CheckCXXHeader("qapplication.h") if not have_qt: noQt() sys.stdout.write("Checking Qt library...") sys.stdout.flush() if not conf.TryLink('#include \nint main() {};\n', ".cpp"): env_qt.Replace(QT_LIB = "qt-mt") if not conf.TryLink('#include \nint main() {};\n', ".cpp"): sys.stdout.write(" not found\n") noQt() sys.stdout.write(" found (%s)\n" % env_qt["QT_LIB"]) if env['MUSEEQTRAYICON']: sys.stdout.write("Museeq's Trayicon enabled...\n") env_qt.Append(CPPDEFINES={'HAVE_TRAYICON' : 1}) else: sys.stdout.write("Museeq's Trayicon disabled...\n") if env['QSA']: sys.stdout.write("Checking for QSA (scripting engine) 1.1 or newer...") sys.stdout.flush() LIBS = env_qt["LIBS"] env_qt.Append(LIBS = ['qsa']) if not conf.TryLink('#include \n#include \nint main() { QSInterpreter::defaultInterpreter()->hasFunction(""); }\n', ".cpp"): env_qt.Replace(LIBS = LIBS) sys.stdout.write(' not found\n') else: sys.stdout.write(' found\n'); env_qt.Append(CPPDEFINES={'HAVE_QSA' : 1}) sys.stdout.write('Checking for QSA Utility Extension...') if not conf.TryLink('#include \nint main() {};\n', ".cpp"): sys.stdout.write(' not found\n') else: sys.stdout.write(' found\n'); env_qt.Append(CPPDEFINES={'HAVE_QSA_UTIL' : 1}) sys.stdout.write('Checking for QSA Input Dialog Extension...') if not conf.TryLink('#include \nint main() {};\n', ".cpp"): sys.stdout.write(' not found\n') else: sys.stdout.write(' found\n'); env_qt.Append(CPPDEFINES={'HAVE_QSA_DIALOG' : 1}) if env['RELAY_QSA']: sources.extend(Relay(env_qt, 'qsa')) else: print "QSA not found or disabled." conf.Finish() env_qt.Append(CPPPATH = '#') env_qt.Append(LIBPATH = env['LIBPATH_MUCIPHER']) env_qt.Append(LIBS = ['ucipher']) for lang in translations: lsources = [] mess = "" if os.path.exists("../../museeq/"+tr_dir+"museeq_"+lang+".ts"): lsources.append( tr_dir+"museeq_"+lang+".ts" ) mess += "Museeq "+lang+" translation found... " else: mess += "Museeq "+lang+" translation NOT found! " if os.path.exists("../../museeq/"+tr_dir+"qt_"+lang+".ts"): lsources.append(tr_dir+"qt_"+lang+".ts") mess += "Qt "+lang+" translation found... " else: mess += "Qt "+lang+" translation NOT found!" if lsources == []: print "Neither museeq_"+lang+".ts nor qt_"+lang+".ts found. Translation skipped.." continue else: print mess env_qt.Command(tr_dir+"museeq_"+lang+".qm", lsources, translation_build) qm_files.append(tr_dir+"museeq_"+lang+".qm") museeq = env_qt.Program('museeq', sources) bin_install = env_qt.Install(env['DESTDIR'] + env['BINDIR'], [museeq]) script_install = env_qt.Install(env['DESTDIR'] + os.path.join(env_qt['DATADIR'], 'museek', 'museeq'), scripts) translations_install = env_qt.Install(env['DESTDIR'] + os.path.join(env_qt['DATADIR'], 'museek', 'museeq', "translations"), qm_files) manfile = ["museeq.1"] man_install = env_qt.Install(env['DESTDIR'] + env['MANDIR'], manfile) env.Alias('install_museeq', translations_install) # INSTALL THEMES for theme in theme_lists: if theme_lists[theme] != []: print "Museeq theme, %s to be installed. %d Icons" % ( theme, len(theme_lists[theme]) ) env.Alias('install_museeq', env_qt.Install(env['DESTDIR'] + os.path.join(env_qt['DATADIR'], 'museek', 'museeq', theme), theme_lists[theme])) env.Alias('install_museeq', script_install) env.Alias('install_museeq', bin_install) env.Alias('install_museeq', man_install) env.Alias('install', 'install_museeq') print