예제 #1
0
def installKDE4Languages():
    if uni.isAvailableKDE4():
        for langCode in uni.getInstalledLanguagesCodes():
            installKDE4Language(langCode)
        uni.setMySetting("isInstalledKDE4Language", True)
        return True
    return False
예제 #2
0
def checkAmarok(_isAlertIfNotAvailable=True, _isUseReadOnly=True):
    global isAskEmbeddedDBConfiguration
    if isLoadedMysql and uni.isAvailableKDE4():
        if uni.getBoolValue("amarokIsUseHost"):
            if _isUseReadOnly or uni.getBoolValue(
                    "isReadOnlyAmarokDBHost") is False:
                return True
            else:
                if _isAlertIfNotAvailable:
                    answer = Dialogs.ask(
                        translate("Amarok", "This Feature Is Not Usable"),
                        translate(
                            "Amarok",
                            "This feature is not usable with read only Amarok database. <br>Are you want to give permission to read and write for Amarok database?"
                        ))
                    if answer == Dialogs.Yes:
                        uni.setMySetting("isReadOnlyAmarokDBHost", False)
                        return True
        else:
            isAskEmbeddedDBConfiguration = True
            return checkEmbeddedDB()
    else:
        if _isAlertIfNotAvailable:
            Dialogs.showError(
                translate("Amarok", "Amarok Module Is Not Usable"),
                translate("Amarok", "Please run Amarok once."))
        return False
    return False
예제 #3
0
def installKDE4Language(_language="tr_TR"):
    if uni.isAvailableKDE4():
        KDELocalateDir = fu.joinPath(uni.getKDE4HomePath(), "share", "locale", str(_language[:2]), "LC_MESSAGES")
        if uni.isRunningAsRoot():
            KDELocalateDir = fu.joinPath("/usr", "share", "locale", str(_language[:2]), "LC_MESSAGES")
        KDELocalateDir = str(KDELocalateDir)
        langFile = fu.joinPath(fu.HamsiManagerDirectory, "Languages", "DontTranslate", str(_language),
                               "HamsiManager.mo")
        if fu.isFile(fu.joinPath(KDELocalateDir, "HamsiManager.mo")) is False:
            if fu.isFile(langFile):
                if fu.isDir(KDELocalateDir) is False:
                    fu.makeDirs(KDELocalateDir)
                fu.copyFileOrDir(langFile, fu.joinPath(KDELocalateDir, "HamsiManager.mo"))
        return True
    return False
예제 #4
0
def checkAmarok(_isAlertIfNotAvailable=True, _isUseReadOnly=True):
    global isAskEmbeddedDBConfiguration
    if isLoadedMysql and uni.isAvailableKDE4():
        if uni.getBoolValue("amarokIsUseHost"):
            if _isUseReadOnly or uni.getBoolValue("isReadOnlyAmarokDBHost") is False:
                return True
            else:
                if _isAlertIfNotAvailable:
                    answer = Dialogs.ask(translate("Amarok", "This Feature Is Not Usable"),
                                         translate("Amarok",
                                                   "This feature is not usable with read only Amarok database. <br>Are you want to give permission to read and write for Amarok database?"))
                    if answer == Dialogs.Yes:
                        uni.setMySetting("isReadOnlyAmarokDBHost", False)
                        return True
        else:
            isAskEmbeddedDBConfiguration = True
            return checkEmbeddedDB()
    else:
        if _isAlertIfNotAvailable:
            Dialogs.showError(translate("Amarok", "Amarok Module Is Not Usable"),
                              translate("Amarok", "Please run Amarok once."))
        return False
    return False
예제 #5
0
def isInstallable():
    return uni.isAvailableKDE4()
예제 #6
0
def checkAndGetDB(_isNoAlertIfSuccessfully=True, _isReCheck=False):
    global isCheckAgain
    if _isReCheck:
        isCheckAgain = True
    if checkAmarok():
        try:
            db = connectAndGetDB()
            if db is not None:
                if isCheckAgain:
                    db.query(
                        "SELECT version FROM admin WHERE component='DB_VERSION'"
                    )
                    rows = db.store_result().fetch_row(1)
                    dbVersion = int(rows[0][0])
                    if dbVersion not in availableDBVersions:
                        answer = Dialogs.ask(
                            translate("Amarok",
                                      "Your Amarok DB Version Is Not Tested"),
                            str(
                                translate(
                                    "Amarok",
                                    "Your Amarok DB version is not tested. We don`t suggest but you can use at your own risk. Are you sure you want to use?"
                                    "<br>Your Amarok DB Version:%s"
                                    "<br>Tested Amarok DB Versions:%s")) %
                            (str(dbVersion), str(availableDBVersions)))
                        if answer is not Dialogs.Yes:
                            return None
                    if _isNoAlertIfSuccessfully is False:
                        Dialogs.show(
                            translate("Amarok", "Connected To Database"),
                            str(
                                translate("Amarok",
                                          "Connected successfully to \"%s\""))
                            % uni.MySettings["amarokDBDB"])
                isCheckAgain = False
                return db
            else:
                Dialogs.showError(
                    translate("Amarok", "Amarok Database Is Not Usable"),
                    translate("Amarok", "Amarok database is not accessible."))
            return None
        except:
            cla, currentError, trbk = sys.exc_info()
            if str(currentError).find("Unknown MySQL server host") != -1:
                Dialogs.showError(
                    translate("Amarok", "Not Connected To Database"),
                    str(
                        translate(
                            "Amarok",
                            "Unknown MySQL server host \"%s\" <br><b>Details</b> : %s"
                        )) %
                    (uni.MySettings["amarokDBHost"], str(currentError)))
            elif str(currentError).find("Access denied for user") != -1:
                Dialogs.showError(
                    translate("Amarok", "Not Connected To Database"),
                    str(
                        translate(
                            "Amarok",
                            "Access denied for user \"%s\" <br><b>Details</b> : %s"
                        )) %
                    (uni.MySettings["amarokDBUser"], str(currentError)))
            elif str(currentError).find("Unknown database") != -1:
                Dialogs.showError(
                    translate("Amarok", "Not Connected To Database"),
                    str(
                        translate(
                            "Amarok",
                            "Unknown database \"%s\" <br><b>Details</b> : %s"))
                    % (uni.MySettings["amarokDBDB"], str(currentError)))
            elif str(currentError).find(
                    "Can't connect to local MySQL server through socket"
            ) != -1:
                Dialogs.showError(
                    translate("Amarok", "Not Connected To Database"),
                    str(
                        translate(
                            "Amarok",
                            "Can't connect to local MySQL server through socket \"%s\" <br><b>Details</b> : %s"
                        )) %
                    (str(currentError).replace(
                        "(2002, \"Can't connect to local MySQL server through socket '",
                        "").replace("' (2)\")", ""), str(currentError)))
            else:
                ReportBug.ReportBug()
            return None
    else:
        if isLoadedMysql is False:
            Dialogs.showError(
                translate("Amarok", "Amarok Module Is Not Usable"),
                translate(
                    "Amarok",
                    "\"python-mysql\" (MySQLdb / _mysql) named module is not installed on your system. Please install this module and try again."
                ))
        elif uni.isAvailableKDE4() is False:
            Dialogs.showError(
                translate("Amarok", "Amarok Module Is Not Usable"),
                translate("Amarok",
                          "Please open user session with KDE4 once."))
        else:
            Dialogs.showError(
                translate("Amarok", "Amarok Module Is Not Usable"),
                translate("Amarok", "Please run Amarok once."))
        return None
예제 #7
0
fu.writeToFile(fu.joinPath(fu.getTempDir(), "HamsiManagerHasBeenBuilt"),
               str(sys.argv) + "\nPlease, don't remove this file.")
include_files.append((os.path.join(fu.getTempDir(), "HamsiManagerHasBeenBuilt"), "HamsiManagerHasBeenBuilt"))

data_files = []

if os.name == "posix":
    from Core import MyConfigure

    installationDirectory = fu.joinPath("/", "usr", "lib", "HamsiManager-" + uni.version)
    fileContent = MyConfigure.getConfiguredDesktopFileContent(installationDirectory, "/usr/bin/hamsi")
    fu.writeToFile(fu.joinPath(fu.getTempDir(), "HamsiManager.desktop"), fileContent)
    data_files.append(
        (fu.joinPath("/", "usr", "share", "applications"), [fu.joinPath(fu.getTempDir(), "HamsiManager.desktop")]))

    if uni.isAvailableKDE4():
        for langCode in uni.getInstalledLanguagesCodes():
            KDELocalateDir = fu.joinPath("/", "usr", "share", "locale", str(langCode[:2]), "LC_MESSAGES")
            langFile = fu.joinPath(fu.HamsiManagerDirectory, "Languages", "DontTranslate", str(langCode),
                                   "HamsiManager.mo")
            if fu.isFile(langFile):
                data_files.append((KDELocalateDir, [langFile]))

    data_files.append((fu.joinPath("/", "usr", "share", "icons"),
                       [fu.joinPath(HamsiManagerDirectory, "Themes", "Default", "Images", "hamsi.png")]))
    data_files.append((fu.joinPath("/", "usr", "share", "pixmaps"),
                       [fu.joinPath(HamsiManagerDirectory, "Themes", "Default", "Images", "hamsi.png")]))

packages = ["Amarok", "Core", "Databases", "Details", "FileUtils", "Languages",
            "MyPlugins", "Options", "SearchEngines", "SpecialTools", "Tables", "Taggers", "Tools", "Viewers", "Bars",
            "hashlib", "tarfile", "urllib", "PyQt4",
예제 #8
0
def checkAndGetDB(_isNoAlertIfSuccessfully=True, _isReCheck=False):
    global isCheckAgain
    if _isReCheck:
        isCheckAgain = True
    if checkAmarok():
        try:
            db = connectAndGetDB()
            if db is not None:
                if isCheckAgain:
                    db.query("SELECT version FROM admin WHERE component='DB_VERSION'")
                    rows = db.store_result().fetch_row(1)
                    dbVersion = int(rows[0][0])
                    if dbVersion not in availableDBVersions:
                        answer = Dialogs.ask(translate("Amarok", "Your Amarok DB Version Is Not Tested"),
                                             str(translate("Amarok",
                                                       "Your Amarok DB version is not tested. We don`t suggest but you can use at your own risk. Are you sure you want to use?"
                                                       "<br>Your Amarok DB Version:%s"
                                                       "<br>Tested Amarok DB Versions:%s")) % (str(dbVersion), str(
                                                 availableDBVersions)))
                        if answer is not Dialogs.Yes:
                            return None
                    if _isNoAlertIfSuccessfully is False:
                        Dialogs.show(translate("Amarok", "Connected To Database"),
                                     str(translate("Amarok", "Connected successfully to \"%s\"")) % uni.MySettings[
                                         "amarokDBDB"])
                isCheckAgain = False
                return db
            else:
                Dialogs.showError(translate("Amarok", "Amarok Database Is Not Usable"),
                                  translate("Amarok", "Amarok database is not accessible."))
            return None
        except:
            cla, currentError, trbk = sys.exc_info()
            if str(currentError).find("Unknown MySQL server host") != -1:
                Dialogs.showError(translate("Amarok", "Not Connected To Database"), str(
                    translate("Amarok", "Unknown MySQL server host \"%s\" <br><b>Details</b> : %s")) % (
                                      uni.MySettings["amarokDBHost"], str(currentError)))
            elif str(currentError).find("Access denied for user") != -1:
                Dialogs.showError(translate("Amarok", "Not Connected To Database"),
                                  str(translate("Amarok", "Access denied for user \"%s\" <br><b>Details</b> : %s")) % (
                                      uni.MySettings["amarokDBUser"], str(currentError)))
            elif str(currentError).find("Unknown database") != -1:
                Dialogs.showError(translate("Amarok", "Not Connected To Database"),
                                  str(translate("Amarok", "Unknown database \"%s\" <br><b>Details</b> : %s")) % (
                                      uni.MySettings["amarokDBDB"], str(currentError)))
            elif str(currentError).find("Can't connect to local MySQL server through socket") != -1:
                Dialogs.showError(translate("Amarok", "Not Connected To Database"), str(translate("Amarok",
                                                                                                  "Can't connect to local MySQL server through socket \"%s\" <br><b>Details</b> : %s")) % (
                                      str(currentError).replace(
                                          "(2002, \"Can't connect to local MySQL server through socket '",
                                          "").replace("' (2)\")", ""), str(currentError)))
            else:
                ReportBug.ReportBug()
            return None
    else:
        if isLoadedMysql is False:
            Dialogs.showError(translate("Amarok", "Amarok Module Is Not Usable"), translate("Amarok",
                                                                                            "\"python-mysql\" (MySQLdb / _mysql) named module is not installed on your system. Please install this module and try again."))
        elif uni.isAvailableKDE4() is False:
            Dialogs.showError(translate("Amarok", "Amarok Module Is Not Usable"),
                              translate("Amarok", "Please open user session with KDE4 once."))
        else:
            Dialogs.showError(translate("Amarok", "Amarok Module Is Not Usable"),
                              translate("Amarok", "Please run Amarok once."))
        return None