BALSAMIQ CRACK

Paste Content

import json
import os
import time
import webbrowser
import sys
import re


def handleWindows(extra_seconds):
    print("OS : Windows")
    local_settings = r"{}\Balsamiq\Balsamiq Wireframes\LocalSettings.json".format(os.getenv('APPDATA'))
    print("Reading from {}".format(local_settings))
    with open(local_settings) as reader:
        json_data = json.load(reader)
    json_data['DefaultSelectionColorRGBA'] = int(time.time()) + extra_seconds
    print("Writing to {}".format(local_settings))
    with open(local_settings, 'w') as outfile:
        json.dump(json_data, outfile)


def handleMacos(trial_days_left=30, debug_mode=False):
    print("OS : macOS")
    print("Debug Mode: " + str(debug_mode))

    def dump_debug(start_func, end_func, content_func, new_func):
        print("function start line: {}".format(start_func))
        print("function end line: {}".format(end_func))
        print("function content:")
        print(content_func)
        print("new function content:")
        print(new_func)

    editor_macos = "/Applications/Balsamiq Wireframes.app/Contents/Resources/editor-macos.js"
    editor_macos_test = r"C:\Users\housi\Desktop\Balsamiq\editor-macos-test.js"
    if debug_mode:
        editor_macos = editor_macos_test
    print(editor_macos)
    if not os.path.exists(editor_macos):
        print("editor-macos.js NOT FOUND!")
        exit(0)
    get_trial_days_left_pattern = re.compile(r"\s*function\s+getTrialDaysLeftFromNativeData\(\w+\)\s*{")
    func_start_line = -1
    func_end_line = -1
    found_a_match = False
    function_content = ""
    with open(editor_macos, encoding="utf8") as reader:
        line_number = 0
        # it starts at 1 because w have already matched one '{'
        curly_braces_balance = 1
        for line in reader.readlines():
            line_number += 1
            if not found_a_match:
                match = get_trial_days_left_pattern.match(line)
                if match is not None:
                    found_a_match = True
                    func_start_line = line_number
                    # TODO what if the start line is also the end line, One-Liner function

            else:
                curly_braces_balance += line.count("{")
                curly_braces_balance -= line.count("}")
                if curly_braces_balance == 0:
                    function_content = function_content + line
                    func_end_line = line_number
                    break
            if func_start_line != -1:
                function_content = function_content + line

    body = "return {};".format(trial_days_left)
    new_function_signature = "\nfunction getTrialDaysLeftFromNativeData(nativeData) {\n\t" + body + "\n}\n\n"

    if debug_mode:
        dump_debug(func_start_line, func_end_line, function_content, new_function_signature)

    with open(editor_macos, encoding="utf8") as reader:
        lines = reader.readlines()

    # The first -1 to make it base 0 and the second one refers to the previous index
    index = (func_start_line - 1) - 1
    leading_count = 0
    # Removing leading blank lines before the function definition
    while not lines[index].strip():
        lines.pop(index)
        index -= 1
        leading_count += 1

    # The start and end indexes will change after removing the leading blank lines
    func_start_line -= leading_count
    func_end_line -= leading_count

    # Removing trailing blank lines after the function end
    index = func_end_line
    while not lines[index].strip():
        lines.pop(index)

    # Removing the old function
    for i in range(func_end_line - func_start_line + 1):
        lines.pop(func_start_line - 1)

    # Replacing it with the new function
    lines.insert(func_start_line - 1, new_function_signature)

    # Writing changes back to file
    with open(editor_macos, "w", encoding="utf8") as f:
        lines = "".join(lines)
        f.write(lines)


print("IMPORTANT! please make sure to close Balsamiq before proceeding or the script won't have any effect")
years = int(input("How many years of trial do you want :) "))

if sys.platform.startswith("win"):
    handleWindows(years * 365 * 24 * 60 * 60)
elif sys.platform.startswith("darwin"):
    handleMacos(years * 365)
else:
    print("Sorry, operating system not supported")
    exit(0)

print("****************************************************************")
print("* Congratulations! You gained {} days of trial".format(years * 365))
print("* Please don't forget to leave a star ✭")
print("****************************************************************")
print("https://gist.github.com/HoussemNasri/c09e55e0e5f451aa10f8621a6680ba28")
webbrowser.open("https://gist.github.com/HoussemNasri/c09e55e0e5f451aa10f8621a6680ba28")
input("Press ENTER to exit")

Comments

No comments yet.