diff --git a/README.md b/README.md index 672edb3..2b09f62 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,21 @@ -# LightWallet GUI -This is a GUI frontend that runs on top of simplewallet (in RPC mode). It is designed to work with a remote bitmonerod node by default, so that it can function as a lightweight wallet for most users. By default it uses Atrides open node at http://node.moneroworld.com:18081, but you can change the node it uses to a local node during setup or at any launch; to use a local bitmonerod instance set it as http://localhost:18081. - -**This program is an alpha version, and although I don't think there is really any way to screw up your wallet, please exercise some modicum of caution.** - -## Installation -### Windows, Linux, and Mac -The requirements for running the program using the jar file release is a java virtual machine installed v1.7+, and monero-wallet-cli v0.10+ in the same directory. If you also want to run a local daemon you'll monerod.exe/monerod binary. The wallet and daemon files can be downloaded here: https://github.com/monero-project/bitmonero/releases - -If you're using the binary LightWallet.exe, you still need to have monero-wallet-cli.exe in the same directory. - -## Running -It should be OK to launch the program with an instance of monerod and/or monero-wallet-cli running. - -On the initial run, it will prompt you to create a new wallet or to import one by typing/copying in the path of the keys file or importing a 25 word mnemonic seed. This will create several files in the same directory as LightWallet and monero-wallet-cli, including lightwallet.conf. If you ever want to create or import a new wallet, simply delete lightwallet.conf. - -## Known issues -If you manage to crash the program, you will probably get an instance of monero-wallet-cli(.exe) hanging around, so to get rid of it you will need to go into the task manager processes tab and end the monero-wallet-cli process on windows, "ps -A | grep monero-wallet-cli" to get PID and then "kill PID" or "killall monero-wallet-cli" on linux, or restart your computer. - -## Future Work -Transaction history has been disabled for the time being. If you want to parse your tx history check monero-wallet-cli.log in the same directory. +# LightWallet GUI +This is a GUI frontend that runs on top of simplewallet (in RPC mode). It is designed to work with a remote bitmonerod node by default, so that it can function as a lightweight wallet for most users. By default it uses Atrides open node at http://node.moneroworld.com:18081, but you can change the node it uses to a local node during setup or at any launch; to use a local bitmonerod instance set it as http://localhost:18081. + +**This program is an alpha version, and although I don't think there is really any way to screw up your wallet, please exercise some modicum of caution.** + +## Installation +### Windows, Linux, and Mac +The requirements for running the program using the jar file release is a java virtual machine installed v1.7+, and monero-wallet-cli v0.10+ in the same directory. If you also want to run a local daemon you'll monerod.exe/monerod binary. The wallet and daemon files can be downloaded here: https://github.com/monero-project/bitmonero/releases + +If you're using the binary LightWallet.exe, you still need to have monero-wallet-cli.exe in the same directory. + +## Running +It should be OK to launch the program with an instance of monerod and/or monero-wallet-cli running. + +On the initial run, it will prompt you to create a new wallet or to import one by typing/copying in the path of the keys file or importing a 25 word mnemonic seed. This will create several files in the same directory as LightWallet and monero-wallet-cli, including lightwallet.conf. If you ever want to create or import a new wallet, simply delete lightwallet.conf. + +## Known issues +If you manage to crash the program, you will probably get an instance of monero-wallet-cli(.exe) hanging around, so to get rid of it you will need to go into the task manager processes tab and end the monero-wallet-cli process on windows, "ps -A | grep monero-wallet-cli" to get PID and then "kill PID" or "killall monero-wallet-cli" on linux, or restart your computer. + +## Future Work +Transaction history has been disabled for the time being. If you want to parse your tx history check monero-wallet-cli.log in the same directory. diff --git a/android/assets/badlogic.jpg b/android/assets/badlogic.jpg deleted file mode 100644 index 4390da6..0000000 Binary files a/android/assets/badlogic.jpg and /dev/null differ diff --git a/android/assets/title2.jpg b/android/assets/title2.jpg deleted file mode 100644 index 5acb08c..0000000 Binary files a/android/assets/title2.jpg and /dev/null differ diff --git a/android/build.gradle b/android/build.gradle index 868468b..f8c518d 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,5 +1,5 @@ android { - buildToolsVersion "23.0.2" + buildToolsVersion "24.0.3" compileSdkVersion 23 sourceSets { main { @@ -14,6 +14,11 @@ android { instrumentTest.setRoot('tests') } + defaultConfig { + applicationId "com.jw.lightwallet" + minSdkVersion 8 + targetSdkVersion 23 + } } @@ -23,12 +28,16 @@ android { task copyAndroidNatives() { file("libs/armeabi/").mkdirs(); file("libs/armeabi-v7a/").mkdirs(); + file("libs/arm64-v8a/").mkdirs(); + file("libs/x86_64/").mkdirs(); file("libs/x86/").mkdirs(); configurations.natives.files.each { jar -> def outputDir = null - if(jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a") + if(jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a") + if(jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a") if(jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi") + if(jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64") if(jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86") if(outputDir != null) { copy { @@ -59,12 +68,12 @@ task run(type: Exec) { } def adb = path + "/platform-tools/adb" - commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.jw.lightwallet.android/com.jw.lightwallet.android.AndroidLauncher' + commandLine "$adb", 'shell', 'am', 'start', '-n', 'com.jw.lightwallet/com.jw.lightwallet.AndroidLauncher' } // sets up the Android Eclipse project, using the old Ant based build. eclipse { - // need to specify Java source sets explicitely, SpringSource Gradle Eclipse plugin + // need to specify Java source sets explicitly, SpringSource Gradle Eclipse plugin // ignores any nodes added in classpath.file.withXml sourceSets { main { diff --git a/core/src/com/jw/lightwallet/LightWallet.java b/core/src/com/jw/lightwallet/LightWallet.java index 928167a..bf18069 100644 --- a/core/src/com/jw/lightwallet/LightWallet.java +++ b/core/src/com/jw/lightwallet/LightWallet.java @@ -35,12 +35,14 @@ public class LightWallet extends Game { if (os.contains("Windows")) { simplewalletloc = dir + "\\" + "monero-wallet-cli.exe"; - System.out.println(simplewalletloc); + } else { + simplewalletloc = dir + "/" + "monero-wallet-cli"; } + System.out.println(simplewalletloc); // Initialize logger and user interface skin Gdx.app.log(LightWallet.LOG, "Launching application in " + dir + " on " + os); - uiSkin = new Skin(Gdx.files.internal("skin/uiskin.json")); + uiSkin = new Skin(Gdx.files.internal("assets/skin/uiskin.json")); // Check if config file exists, if not launch setup wizard File f = new File("lightwallet.conf"); diff --git a/core/src/com/jw/lightwallet/daemon/BlockHeader.java b/core/src/com/jw/lightwallet/daemon/BlockHeader.java index 297e686..0b5c97b 100644 --- a/core/src/com/jw/lightwallet/daemon/BlockHeader.java +++ b/core/src/com/jw/lightwallet/daemon/BlockHeader.java @@ -25,6 +25,7 @@ public class BlockHeader { return difficulty; } public void setDifficulty(int difficulty) { + System.out.println("Diff is now" + difficulty); this.difficulty = difficulty; } public String getHash() { diff --git a/core/src/com/jw/lightwallet/daemon/DaemonRPC.java b/core/src/com/jw/lightwallet/daemon/DaemonRPC.java index 8bff3bc..33bc196 100644 --- a/core/src/com/jw/lightwallet/daemon/DaemonRPC.java +++ b/core/src/com/jw/lightwallet/daemon/DaemonRPC.java @@ -13,6 +13,8 @@ public class DaemonRPC { public String address; String response; String getlastblock; + Gson gson; + DaemonResponse daemonresponse = new DaemonResponse(); public DaemonRPC () { // address = "http://node.moneroclub.com:8880/json_rpc"; @@ -28,19 +30,17 @@ public class DaemonRPC { Gdx.net.sendHttpRequest (httpGet, new HttpResponseListener() { public void handleHttpResponse(HttpResponse httpResponse) { response = httpResponse.getResultAsString(); - //System.out.print("1st time response" + response); - DaemonResponse daemonresponse = new Gson().fromJson(response, DaemonResponse.class); - //System.out.print("GSON response is" + daemonresponse.getId()); - daemonvalues.setBlockheight(daemonresponse.getResult().getBlock_header().getHeight()); - daemonvalues.setDiff((daemonresponse.getResult().getBlock_header().getDifficulty())); - daemonvalues.setLastblocktime(daemonresponse.getResult().getBlock_header().getTimestamp()); - daemonvalues.setLastblockreward(daemonresponse.getResult().getBlock_header().getReward()); - daemonvalues.setStatus(daemonresponse.getResult().getStatus()); +// System.out.println("1st time response" + response); + daemonvalues.setBlockheight(Integer.parseInt(response.split("height\": ")[1].split(",")[0])); + daemonvalues.setDiff(Long.parseLong(response.split("difficulty\": ")[1].split(",")[0])); + daemonvalues.setLastblocktime(Long.parseLong(response.split("difficulty\": ")[1].split(",")[0])); + daemonvalues.setLastblockreward(Long.parseLong(response.split("reward\": ")[1].split(",")[0])); + daemonvalues.setStatus("OK"); } public void failed(Throwable t) { response = "failed"; - //System.out.print("Failed response status is: " + response); + System.out.print("Failed response status is: " + response); //do stuff here based on the failed attempt } diff --git a/core/src/com/jw/lightwallet/daemon/DaemonResponse.java b/core/src/com/jw/lightwallet/daemon/DaemonResponse.java index 272b306..7453071 100644 --- a/core/src/com/jw/lightwallet/daemon/DaemonResponse.java +++ b/core/src/com/jw/lightwallet/daemon/DaemonResponse.java @@ -6,6 +6,7 @@ public class DaemonResponse { String jsonrpc; DaemonResult result; + public String getId() { return id; } diff --git a/core/src/com/jw/lightwallet/daemon/DaemonResult.java b/core/src/com/jw/lightwallet/daemon/DaemonResult.java index ea9ea49..a8c11a3 100644 --- a/core/src/com/jw/lightwallet/daemon/DaemonResult.java +++ b/core/src/com/jw/lightwallet/daemon/DaemonResult.java @@ -4,7 +4,7 @@ public class DaemonResult { BlockHeader block_header; String status; - + public BlockHeader getBlock_header() { return block_header; diff --git a/core/src/com/jw/lightwallet/screens/AbstractScreen.java b/core/src/com/jw/lightwallet/screens/AbstractScreen.java index 29bcdc2..fc82034 100644 --- a/core/src/com/jw/lightwallet/screens/AbstractScreen.java +++ b/core/src/com/jw/lightwallet/screens/AbstractScreen.java @@ -18,7 +18,7 @@ public class AbstractScreen implements Screen { public AbstractScreen (final LightWallet game) { this.game = game; - this.font = new BitmapFont(Gdx.files.internal("fonts/bauchaomaicha.fnt")); + this.font = new BitmapFont(Gdx.files.internal("assets/fonts/bauchaomaicha.fnt")); this.w = Gdx.graphics.getWidth(); this.h = Gdx.graphics.getHeight(); this.aspect = w/h; diff --git a/core/src/com/jw/lightwallet/screens/CreateScreen.java b/core/src/com/jw/lightwallet/screens/CreateScreen.java index 9f6cd03..6999d93 100644 --- a/core/src/com/jw/lightwallet/screens/CreateScreen.java +++ b/core/src/com/jw/lightwallet/screens/CreateScreen.java @@ -61,7 +61,7 @@ public class CreateScreen extends AbstractScreen { super(game); System.out.print("CreateScreen creating."); - uiSkin = new Skin(Gdx.files.internal("skin/uiskin.json")); + uiSkin = new Skin(Gdx.files.internal("assets/skin/uiskin.json")); padvalue = 20; stage = new Stage(); @@ -69,14 +69,14 @@ public class CreateScreen extends AbstractScreen { screenlayout = new Table(); - logo = new Image(new Texture(Gdx.files.internal("logo.png"))); + logo = new Image(new Texture(Gdx.files.internal("assets/logo.png"))); //logo.scaleBy(0.02f); instruction = "Please enter a name for your wallet in the \"Wallet name\" field. This is typically wallet.bin, " + "but you can make it whatever you like (as long as it is alphanumberic and periods only). " + "Then please enter a strong password for your wallet that you will use to unlock, and then repeat it to ensure it is correct. " + "Your password can be any combination of characters and symbols on your keyboard (I think). " - + "The default bitmonerod node is set for moneroclub, if you want to run a local daemon change the node field to http://localhost:18081."; + + "The default bitmonerod node is set for moneroworld, if you want to run a local daemon change the node field to http://localhost:18081."; instructionlabel= new Label(instruction, uiSkin); instructionlabel.setWrap(true); @@ -195,7 +195,7 @@ public class CreateScreen extends AbstractScreen { System.out.println("Starting creator"); try { - Process wp = Runtime.getRuntime().exec("monero-wallet-cli --generate-new-wallet " + name + " --password " + pw); + Process wp = Runtime.getRuntime().exec(simplewalletloc + " --generate-new-wallet " + name + " --password " + pw); Writer wr = new OutputStreamWriter( wp.getOutputStream() ); BufferedReader rd = new BufferedReader( new InputStreamReader( wp.getInputStream() ) ); diff --git a/core/src/com/jw/lightwallet/screens/DaemonView.java b/core/src/com/jw/lightwallet/screens/DaemonView.java index f3189d7..6f52245 100644 --- a/core/src/com/jw/lightwallet/screens/DaemonView.java +++ b/core/src/com/jw/lightwallet/screens/DaemonView.java @@ -75,7 +75,7 @@ public class DaemonView { public void Update(DaemonValues daemonvalues) { nodevalue.setText(game.walletvalues.getNode()); statusvalue.setText(daemonvalues.getStatus()); - // Gdx.app.log(LightWallet.LOG, "Status value is: " + statusvalue.getText()); + Gdx.app.log(LightWallet.LOG, "Status value is: " + statusvalue.getText()); if (statusvalue.getText().toString().equals("OK")) {statusvalue.setStyle(game.uiSkin.get("greenlabel", LabelStyle.class));} heightvalue.setText(String.valueOf(daemonvalues.getBlockheight())); hashratevalue.setText(new DecimalFormat("##.##").format(daemonvalues.getHashrate()) + " Mh/s"); diff --git a/core/src/com/jw/lightwallet/screens/ImportKeysScreen.java b/core/src/com/jw/lightwallet/screens/ImportKeysScreen.java index 7c34a9b..c331c86 100644 --- a/core/src/com/jw/lightwallet/screens/ImportKeysScreen.java +++ b/core/src/com/jw/lightwallet/screens/ImportKeysScreen.java @@ -66,14 +66,14 @@ public class ImportKeysScreen extends AbstractScreen { screenlayout = new Table(); - logo = new Image(new Texture(Gdx.files.internal("logo.png"))); + logo = new Image(new Texture(Gdx.files.internal("assets/logo.png"))); //logo.scaleBy(0.02f); instruction = "Please enter the full path location of your .keys file to import in the file location field; , " + "for instance: C:\\Users\\jw\\secretstuff\\wallet.keys or /home/jw/secretstuff/wallet.keys. " + "Then please enter your password to unlock the wallet. " + "The wallet keys file will be copied to the local directory and a new binary file will be created. " - + "The default bitmonerod node is set for moneroclub, if you want to run a local daemon change the node field to http://localhost:18081."; + + "The default bitmonerod node is set for moneroworld, if you want to run a local daemon change the node field to http://localhost:18081."; instructionlabel= new Label(instruction, game.uiSkin); instructionlabel.setWrap(true); @@ -222,7 +222,7 @@ public class ImportKeysScreen extends AbstractScreen { try { - Process wp = Runtime.getRuntime().exec("monero-wallet-cli --wallet-file " + name + " --password " + pw + " --daemon-address http://localhost:66666"); + Process wp = Runtime.getRuntime().exec(simplewalletloc + " --wallet-file " + name + " --password " + pw + " --daemon-address http://localhost:66666"); Writer wr = new OutputStreamWriter( wp.getOutputStream() ); BufferedReader rd = new BufferedReader( new InputStreamReader( wp.getInputStream() ) ); @@ -234,25 +234,37 @@ public class ImportKeysScreen extends AbstractScreen { game.walletvalues.setAddress(str.split("wallet: ")[1]); } i += 1; - if (i > 5 && str.contains("****")) { + if (i > 3 && str.contains("****")) { break; } } + str = rd.readLine(); + str = rd.readLine(); + str = rd.readLine(); + str = rd.readLine(); + str = rd.readLine(); + wr.write( "viewkey\n" ); wr.flush(); str = rd.readLine(); - System.out.println(i + " " + str.split(": ")[1]); +// str = rd.readLine(); +// System.out.println(i + " " + str.split(": ")[1]); + System.out.println(i + " " + str); i += 1; - game.walletvalues.setViewkey(str.split(": ")[1]); - +// game.walletvalues.setViewkey(str.split(": ")[1]); + game.walletvalues.setViewkey(str); + str = rd.readLine(); + wr.write( "seed\n" ); wr.flush(); - str = rd.readLine(); - System.out.println(i + " " + str.substring(str.indexOf(":"), str.length())); +// str = rd.readLine(); +// System.out.println(i + " " + str.substring(str.indexOf(":"), str.length())); + System.out.println(i + " " + str); i += 1; - game.walletvalues.setSeed(str.substring(str.indexOf(":"), str.length())); +// game.walletvalues.setSeed(str.substring(str.indexOf(":"), str.length())); + game.walletvalues.setSeed(str); wr.write( "exit\n" ); wr.flush(); diff --git a/core/src/com/jw/lightwallet/screens/ImportSeedScreen.java b/core/src/com/jw/lightwallet/screens/ImportSeedScreen.java index 41a286f..20398d3 100644 --- a/core/src/com/jw/lightwallet/screens/ImportSeedScreen.java +++ b/core/src/com/jw/lightwallet/screens/ImportSeedScreen.java @@ -70,13 +70,13 @@ public class ImportSeedScreen extends AbstractScreen { screenlayout = new Table(); - logo = new Image(new Texture(Gdx.files.internal("logo.png"))); + logo = new Image(new Texture(Gdx.files.internal("assets/logo.png"))); //logo.scaleBy(0.02f); instruction = "Please enter a name for your wallet, the 25 word mnemonic seed to import in the seed field, " + " a password to unlock the wallet in the password field, " + "and then repeat the password to make sure you have it correct, this will be used to encrypt your newly restored wallet files. " - + "The default bitmonerod node is set for moneroclub, if you want to run a local daemon change the node field to http://localhost:18081."; + + "The default bitmonerod node is set for moneroworld, if you want to run a local daemon change the node field to http://localhost:18081."; instructionlabel= new Label(instruction, game.uiSkin); instructionlabel.setWrap(true); @@ -233,7 +233,7 @@ public class ImportSeedScreen extends AbstractScreen { try { - Process wp = Runtime.getRuntime().exec("monero-wallet-cli --restore-deterministic-wallet --daemon-address http://localhost:66666"); + Process wp = Runtime.getRuntime().exec(simplewalletloc + " --restore-deterministic-wallet --wallet-file " + name + " --password " + pw + " --daemon-address http://localhost:66666"); Writer wr = new OutputStreamWriter( wp.getOutputStream() ); BufferedReader rd = new BufferedReader( new InputStreamReader( wp.getInputStream() ) ); @@ -243,35 +243,16 @@ public class ImportSeedScreen extends AbstractScreen { str = rd.readLine(); System.out.println(i + " " + str); i += 1; - if (i > 1 && str.contains("Wallet")) { + if (i > 0 && str.contains("Logging at")) { break; } } - - wr.write( name + "\n" ); - wr.flush(); - wr.write( pw + "\n" ); - wr.flush(); + wr.write( seed + "\n" ); wr.flush(); - - - MessageDigest md = null; - String rando = name + Double.toString(Math.random()); - try { - md = MessageDigest.getInstance("SHA-256"); - } catch (NoSuchAlgorithmException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - md.update(rando.getBytes("UTF-8")); // Change this to "UTF-16" if needed - byte[] digest = md.digest(); - - game.walletvalues.setName(name); - game.walletvalues.setPw(pw); - game.walletvalues.setSeed(seed); - game.walletvalues.setNode(nodetext.getText()); - game.walletvalues.setUserAgent(digest.toString()); + wr.write("0\n" ); + wr.flush(); + while (true) { @@ -294,6 +275,23 @@ public class ImportSeedScreen extends AbstractScreen { wr.write( "exit\n" ); wr.flush(); + + MessageDigest md = null; + String rando = name + Double.toString(Math.random()); + try { + md = MessageDigest.getInstance("SHA-256"); + } catch (NoSuchAlgorithmException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + md.update(rando.getBytes("UTF-8")); // Change this to "UTF-16" if needed + byte[] digest = md.digest(); + + game.walletvalues.setName(name); + game.walletvalues.setPw(pw); + game.walletvalues.setSeed(seed); + game.walletvalues.setNode(nodetext.getText()); + game.walletvalues.setUserAgent(digest.toString()); PrintWriter infowriter = new PrintWriter(name + "info.txt", "UTF-8"); diff --git a/core/src/com/jw/lightwallet/screens/MainScreen.java b/core/src/com/jw/lightwallet/screens/MainScreen.java index 0ae69c3..2d8d249 100644 --- a/core/src/com/jw/lightwallet/screens/MainScreen.java +++ b/core/src/com/jw/lightwallet/screens/MainScreen.java @@ -95,12 +95,12 @@ public class MainScreen extends AbstractScreen { df = new DecimalFormat("#.############"); height = ""; - Skin uiSkin = new Skin(Gdx.files.internal("skin/uiskin.json")); + Skin uiSkin = new Skin(Gdx.files.internal("assets/skin/uiskin.json")); daemonrpc = new DaemonRPC(); daemonvalues = new DaemonValues(); - balancerpc = new BalanceRPC(); + balancerpc = new BalanceRPC(game); balancevalues = new BalanceValues(); walletsaverpc = new WalletSaveRPC(game); @@ -112,7 +112,7 @@ public class MainScreen extends AbstractScreen { screenlayout = new Table(); viewcontainer = new Table(); - logo = new Image(new Texture(Gdx.files.internal("logo.png"))); + logo = new Image(new Texture(Gdx.files.internal("assets/logo.png"))); buttonrow = new Table(); daemonbutton = new TextButton("Daemon", uiSkin); @@ -216,16 +216,19 @@ public class MainScreen extends AbstractScreen { if (fivesectimer == true) { // Timer task to check balance from simplewallet balancerpc.getinfo(balancevalues); +// Gdx.app.log(LightWallet.LOG, "Checked: " + balancevalues.getChecked()); walletview.balancevalue.setText(df.format(balancevalues.getBalance()/1e12) + " XMR"); walletview.unlockedvalue.setText(df.format(balancevalues.getUnlockedbalance()/1e12) + " XMR"); - if (balancevalues.isChecked()) { + if (balancevalues.getChecked()) { +// Gdx.app.log(LightWallet.LOG, "Balance is checked."); walletview.balancevalue.setStyle(game.uiSkin.get("greenlabel", LabelStyle.class)); walletview.unlockedvalue.setStyle(game.uiSkin.get("greenlabel", LabelStyle.class)); } else { +// Gdx.app.log(LightWallet.LOG, "Balance is NOT checked."); walletview.balancevalue.setStyle(game.uiSkin.get("redlabel", LabelStyle.class)); walletview.unlockedvalue.setStyle(game.uiSkin.get("redlabel", LabelStyle.class)); } - Gdx.app.log(LightWallet.LOG, "Height is at: " + height); +// Gdx.app.log(LightWallet.LOG, "Height is at: " + height); walletview.syncvalue.setText(height + " / " + daemonvalues.getBlockheight()); if (height.equals(Integer.toString(daemonvalues.getBlockheight()))) { walletview.syncvalue.setStyle(game.uiSkin.get("greenlabel", LabelStyle.class)); @@ -263,7 +266,7 @@ public class MainScreen extends AbstractScreen { Gdx.app.log(LightWallet.LOG, "Command is: " + "monero-wallet-cli --wallet-file " + game.walletvalues.getName() + " --password " + game.walletvalues.getPw() + " --daemon-address " + game.walletvalues.getNode() + " --rpc-bind-port 19091 --user-agent " + game.walletvalues.getUserAgent() + " --log-level 2"); - wp = Runtime.getRuntime().exec("monero-wallet-cli --wallet-file " + game.walletvalues.getName() + wp = Runtime.getRuntime().exec(game.simplewalletloc + " --wallet-file " + game.walletvalues.getName() + " --password " + game.walletvalues.getPw() + " --daemon-address " + game.walletvalues.getNode() + " --rpc-bind-port 19091 --user-agent " + game.walletvalues.getUserAgent() + " --log-level 2"); wr = new BufferedReader(new InputStreamReader(wp.getInputStream())); @@ -292,6 +295,9 @@ public class MainScreen extends AbstractScreen { // Poll wallet thread and check block height and if transaction data is in output String queuepoll = wq.poll(); try{ + if (queuepoll != null) { + Gdx.app.log(LightWallet.LOG, queuepoll); + } // If the string contains "height" then update the daemon and wallet screen blockheight if (queuepoll != null && queuepoll.contains("height:")) { height = queuepoll.split("height: ")[1].split(",")[0]; @@ -326,6 +332,32 @@ public class MainScreen extends AbstractScreen { failuredialog.key(Keys.ENTER, true); //sends "true" when the ENTER key is pressed failuredialog.show(stage); } + else if (queuepoll != null && queuepoll.contains("Transaction successfully sent.")) { + // Setup popup for successful tx + final String txid = queuepoll.split("<<")[1].split(">>")[0]; + final Dialog goodtxpopup = new Dialog("Succcessful transaction!", game.uiSkin, "dialog") { + public void result(Object obj) { + System.out.println("result "+obj); + } + }; + Label goodtxpopuplabel = new Label("Successfully completed tx with tx is:\n" + txid, game.uiSkin); + goodtxpopuplabel.setWrap(true); + goodtxpopup.add(goodtxpopuplabel).width(400).row(); + goodtxpopup.button("Copy tx id", true).addListener(new ClickListener() { + @Override + public void clicked (InputEvent event, float x, float y) { + Gdx.app.getClipboard().setContents(txid); + } + }); + goodtxpopup.button("Continue", true).addListener(new ClickListener() { + @Override + public void clicked (InputEvent event, float x, float y) { + goodtxpopup.remove(); + } + }); + goodtxpopup.key(Keys.ENTER, true); //sends "true" when the ENTER key is pressed + goodtxpopup.show(stage); + } } catch (NullPointerException e){e.printStackTrace();} } diff --git a/core/src/com/jw/lightwallet/screens/PasswordScreen.java b/core/src/com/jw/lightwallet/screens/PasswordScreen.java index 5a489f3..976cff8 100644 --- a/core/src/com/jw/lightwallet/screens/PasswordScreen.java +++ b/core/src/com/jw/lightwallet/screens/PasswordScreen.java @@ -45,7 +45,7 @@ public class PasswordScreen extends AbstractScreen { super(game); System.out.print("CreateScreen creating."); - uiSkin = new Skin(Gdx.files.internal("skin/uiskin.json")); + uiSkin = new Skin(Gdx.files.internal("assets/skin/uiskin.json")); padvalue = 20; stage = new Stage(); @@ -53,7 +53,7 @@ public class PasswordScreen extends AbstractScreen { screenlayout = new Table(); - logo = new Image(new Texture(Gdx.files.internal("logo.png"))); + logo = new Image(new Texture(Gdx.files.internal("assets/logo.png"))); //logo.scaleBy(0.02f); instruction = "Please enter your password in the password field below for the wallet" + game.walletvalues.getName() + ". " diff --git a/core/src/com/jw/lightwallet/screens/TransactionView.java b/core/src/com/jw/lightwallet/screens/TransactionView.java index 338940c..b714845 100644 --- a/core/src/com/jw/lightwallet/screens/TransactionView.java +++ b/core/src/com/jw/lightwallet/screens/TransactionView.java @@ -212,6 +212,8 @@ public class TransactionView { httpGet.setUrl(swaddress); httpGet.setContent(getbalance); httpGet.setTimeOut(2500); + httpGet.setHeader("User-Agent", game.walletvalues.getUserAgent()); + Gdx.net.sendHttpRequest (httpGet, new HttpResponseListener() { public void handleHttpResponse(HttpResponse httpResponse) { @@ -222,36 +224,7 @@ public class TransactionView { System.out.println(txresponse.getResult().getTx_hash()); String txid = txresponse.getResult().getTx_hash().substring(1, txresponse.getResult().getTx_hash().length()-1);; - - System.out.println("Tx id is: " + txid); - System.out.println("Tx id length is: " + txid.length()); - - if (txid.length() == 64) { - // Setup popup for successful tx - final String finaltxid = txid; - final Dialog goodtxpopup = new Dialog("Succcessful transaction!", game.uiSkin, "dialog") { - public void result(Object obj) { - System.out.println("result "+obj); - } - }; - Label goodtxpopuplabel = new Label("Successfully completed tx with tx is:\n" + txid, game.uiSkin); - goodtxpopuplabel.setWrap(true); - goodtxpopup.add(goodtxpopuplabel).width(400).row(); - goodtxpopup.button("Copy tx id", true).addListener(new ClickListener() { - @Override - public void clicked (InputEvent event, float x, float y) { - Gdx.app.getClipboard().setContents(finaltxid); - } - }); - goodtxpopup.button("Continue", true).addListener(new ClickListener() { - @Override - public void clicked (InputEvent event, float x, float y) { - goodtxpopup.remove(); - } - }); - goodtxpopup.key(Keys.ENTER, true); //sends "true" when the ENTER key is pressed - goodtxpopup.show(stage); - } + } public void failed(Throwable t) { diff --git a/core/src/com/jw/lightwallet/screens/WizardScreen.java b/core/src/com/jw/lightwallet/screens/WizardScreen.java index a01752e..24f4f52 100644 --- a/core/src/com/jw/lightwallet/screens/WizardScreen.java +++ b/core/src/com/jw/lightwallet/screens/WizardScreen.java @@ -36,7 +36,7 @@ public class WizardScreen extends AbstractScreen { public WizardScreen(final LightWallet game) { super(game); - uiSkin = new Skin(Gdx.files.internal("skin/uiskin.json")); + uiSkin = new Skin(Gdx.files.internal("assets/skin/uiskin.json")); padvalue = 20; stage = new Stage(); @@ -44,10 +44,11 @@ public class WizardScreen extends AbstractScreen { screenlayout = new Table(); - logo = new Image(new Texture(Gdx.files.internal("logo.png"))); + logo = new Image(new Texture(Gdx.files.internal("assets/logo.png"))); wizardtext = "Hello. It seems this is the either the first time you are launching LightWallet or you have deleted your lightwallet.conf file. " + + "You must have a copy of monero-wallet-cli executable in the same directory as the LightWallet executable. " + "Please select from the options below whether you would like to create a new wallet, import a wallet from a .keys file, " + "or import a wallet using your 25-word mnemonic seed."; diff --git a/core/src/com/jw/lightwallet/utils/BalanceValues.java b/core/src/com/jw/lightwallet/utils/BalanceValues.java index f0d3cab..2893213 100644 --- a/core/src/com/jw/lightwallet/utils/BalanceValues.java +++ b/core/src/com/jw/lightwallet/utils/BalanceValues.java @@ -6,7 +6,7 @@ public class BalanceValues { long balance; boolean checked; - public boolean isChecked() { + public boolean getChecked() { return checked; } public void setChecked(boolean checked) { diff --git a/core/src/com/jw/lightwallet/wallet/BalanceRPC.java b/core/src/com/jw/lightwallet/wallet/BalanceRPC.java index 3b25f22..5b84397 100644 --- a/core/src/com/jw/lightwallet/wallet/BalanceRPC.java +++ b/core/src/com/jw/lightwallet/wallet/BalanceRPC.java @@ -7,14 +7,18 @@ import com.badlogic.gdx.Net.HttpResponse; import com.badlogic.gdx.Net.HttpResponseListener; import com.google.gson.Gson; import com.jw.lightwallet.utils.BalanceValues; +import com.jw.lightwallet.LightWallet; + public class BalanceRPC { + LightWallet game; public String swaddress; String response; String getbalance; - public BalanceRPC () { + public BalanceRPC (LightWallet game) { + this.game = game; swaddress = "http://localhost:19091/json_rpc"; getbalance = "{\"jsonrpc\":\"2.0\",\"id\":\"test\",\"method\":\"getbalance\",\"params\":[]}"; } @@ -22,19 +26,29 @@ public class BalanceRPC { public void getinfo (final BalanceValues balancevalues) { HttpRequest httpGet = new HttpRequest(HttpMethods.POST); httpGet.setUrl(swaddress); - httpGet.setContent(getbalance); + httpGet.setContent(getbalance); + httpGet.setHeader("User-Agent", game.walletvalues.getUserAgent()); Gdx.net.sendHttpRequest (httpGet, new HttpResponseListener() { public void handleHttpResponse(HttpResponse httpResponse) { response = httpResponse.getResultAsString(); - BalanceResponse balanceresponse = new Gson().fromJson(response, BalanceResponse.class); - balancevalues.setBalance(balanceresponse.getResult().getBalance()); - balancevalues.setUnlockedbalance(balanceresponse.getResult().getUnlockedbalance()); +// Gdx.app.log(LightWallet.LOG, "Checked: " + balancevalues.getChecked()); +// Gdx.app.log(LightWallet.LOG, "Balance is: " + response); +// BalanceResponse balanceresponse = new Gson().fromJson(response, BalanceResponse.class); +// balancevalues.setBalance(balanceresponse.getResult().getBalance()); +// balancevalues.setUnlockedbalance(balanceresponse.getResult().getUnlockedbalance()); +// Gdx.app.log(LightWallet.LOG, response.split("\"balance\": ")[1].split(",")[0]); + balancevalues.setBalance(Long.parseLong(response.split("\"balance\": ")[1].split(",")[0])); +// Gdx.app.log(LightWallet.LOG, response.split("unlocked_balance\": ")[1].split("}")[0].replaceAll("\\s+","")); + balancevalues.setUnlockedbalance(Long.parseLong(response.split("unlocked_balance\": ")[1].split("}")[0].replaceAll("\\s+",""))); + Gdx.app.log(LightWallet.LOG, "Setting checked true."); balancevalues.setChecked(true); } public void failed(Throwable t) { response = "failed"; + Gdx.app.log(LightWallet.LOG, "Failed - setting checked false."); + Gdx.app.log(LightWallet.LOG, t.getMessage()); balancevalues.setChecked(false); } diff --git a/core/src/com/jw/lightwallet/wallet/WalletSaveRPC.java b/core/src/com/jw/lightwallet/wallet/WalletSaveRPC.java index f07260c..a3c17bc 100644 --- a/core/src/com/jw/lightwallet/wallet/WalletSaveRPC.java +++ b/core/src/com/jw/lightwallet/wallet/WalletSaveRPC.java @@ -20,17 +20,19 @@ public class WalletSaveRPC { this.game = game; swaddress = "http://localhost:19091/json_rpc"; store = "{\"jsonrpc\":\"2.0\",\"id\":\"test\",\"method\":\"store\",\"params\":[]}"; +// store = "{\"jsonrpc\":\"2.0\",\"id\":\"test\",\"user-agent\":" + game.walletvalues.getUserAgent() + ",\"method\":\"store\",\"params\":[]}"; } public void trysave (final Label savestatuslabel) { HttpRequest httpGet = new HttpRequest(HttpMethods.POST); httpGet.setUrl(swaddress); - httpGet.setContent(store); + httpGet.setContent(store); + httpGet.setHeader("User-Agent", game.walletvalues.getUserAgent()); Gdx.net.sendHttpRequest (httpGet, new HttpResponseListener() { public void handleHttpResponse(HttpResponse httpResponse) { response = httpResponse.getResultAsString(); - //System.out.print("Balance response: " + response); +// System.out.print("Save response: " + response); savestatuslabel.setText("Successfully saved"); savestatuslabel.setStyle(game.uiSkin.get("greenlabel", LabelStyle.class)); } diff --git a/desktop/assets/fonts/bauchaomaicha.fnt b/desktop/assets/fonts/bauchaomaicha.fnt new file mode 100644 index 0000000..6b7e11c --- /dev/null +++ b/desktop/assets/fonts/bauchaomaicha.fnt @@ -0,0 +1,101 @@ +info face="Bauchaomaicha Regular" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=0,0 +common lineHeight=20 base=16 scaleW=512 scaleH=512 pages=1 packed=0 +page id=0 file="bauchaomaicha.png" +chars count=95 +char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=16 xadvance=4 page=0 chnl=0 +char id=35 x=0 y=0 width=26 height=20 xoffset=0 yoffset=-1 xadvance=28 page=0 chnl=0 +char id=36 x=26 y=0 width=10 height=20 xoffset=0 yoffset=-1 xadvance=10 page=0 chnl=0 +char id=92 x=36 y=0 width=12 height=20 xoffset=1 yoffset=-1 xadvance=14 page=0 chnl=0 +char id=64 x=48 y=0 width=18 height=20 xoffset=0 yoffset=-1 xadvance=18 page=0 chnl=0 +char id=47 x=66 y=0 width=12 height=20 xoffset=0 yoffset=-1 xadvance=12 page=0 chnl=0 +char id=125 x=78 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=10 page=0 chnl=0 +char id=123 x=87 y=0 width=9 height=20 xoffset=0 yoffset=-1 xadvance=10 page=0 chnl=0 +char id=93 x=96 y=0 width=6 height=20 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=0 +char id=91 x=102 y=0 width=6 height=20 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=0 +char id=41 x=108 y=0 width=6 height=20 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=0 +char id=40 x=114 y=0 width=5 height=20 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=0 +char id=124 x=119 y=0 width=4 height=19 xoffset=2 yoffset=0 xadvance=6 page=0 chnl=0 +char id=106 x=123 y=0 width=12 height=19 xoffset=-4 yoffset=2 xadvance=4 page=0 chnl=0 +char id=38 x=135 y=0 width=14 height=18 xoffset=0 yoffset=1 xadvance=12 page=0 chnl=0 +char id=81 x=149 y=0 width=14 height=18 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=127 x=163 y=0 width=18 height=16 xoffset=0 yoffset=1 xadvance=12 page=0 chnl=0 +char id=37 x=181 y=0 width=18 height=16 xoffset=0 yoffset=1 xadvance=18 page=0 chnl=0 +char id=63 x=199 y=0 width=10 height=16 xoffset=0 yoffset=1 xadvance=10 page=0 chnl=0 +char id=33 x=209 y=0 width=4 height=16 xoffset=0 yoffset=1 xadvance=4 page=0 chnl=0 +char id=48 x=213 y=0 width=10 height=16 xoffset=0 yoffset=1 xadvance=10 page=0 chnl=0 +char id=57 x=223 y=0 width=10 height=16 xoffset=0 yoffset=1 xadvance=10 page=0 chnl=0 +char id=56 x=233 y=0 width=10 height=16 xoffset=0 yoffset=1 xadvance=10 page=0 chnl=0 +char id=55 x=243 y=0 width=10 height=16 xoffset=0 yoffset=1 xadvance=10 page=0 chnl=0 +char id=54 x=253 y=0 width=10 height=16 xoffset=0 yoffset=1 xadvance=10 page=0 chnl=0 +char id=53 x=263 y=0 width=10 height=16 xoffset=0 yoffset=1 xadvance=10 page=0 chnl=0 +char id=52 x=273 y=0 width=10 height=16 xoffset=0 yoffset=1 xadvance=10 page=0 chnl=0 +char id=51 x=283 y=0 width=10 height=16 xoffset=0 yoffset=1 xadvance=10 page=0 chnl=0 +char id=50 x=293 y=0 width=10 height=16 xoffset=0 yoffset=1 xadvance=10 page=0 chnl=0 +char id=121 x=303 y=0 width=14 height=16 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=116 x=317 y=0 width=11 height=16 xoffset=-2 yoffset=1 xadvance=8 page=0 chnl=0 +char id=113 x=328 y=0 width=14 height=16 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=112 x=342 y=0 width=14 height=16 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=108 x=356 y=0 width=8 height=16 xoffset=-2 yoffset=1 xadvance=4 page=0 chnl=0 +char id=107 x=364 y=0 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=104 x=378 y=0 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=103 x=392 y=0 width=14 height=16 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=102 x=406 y=0 width=14 height=16 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=100 x=420 y=0 width=10 height=16 xoffset=0 yoffset=1 xadvance=10 page=0 chnl=0 +char id=98 x=430 y=0 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=90 x=444 y=0 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=89 x=458 y=0 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=88 x=472 y=0 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=87 x=486 y=0 width=16 height=16 xoffset=-2 yoffset=1 xadvance=12 page=0 chnl=0 +char id=86 x=0 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=85 x=14 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=84 x=28 y=20 width=13 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=83 x=41 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=82 x=55 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=80 x=69 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=79 x=83 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=78 x=97 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=77 x=111 y=20 width=16 height=16 xoffset=-2 yoffset=1 xadvance=12 page=0 chnl=0 +char id=76 x=127 y=20 width=13 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=75 x=140 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=74 x=154 y=20 width=8 height=16 xoffset=0 yoffset=1 xadvance=8 page=0 chnl=0 +char id=73 x=162 y=20 width=8 height=16 xoffset=-2 yoffset=1 xadvance=4 page=0 chnl=0 +char id=72 x=170 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=71 x=184 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=70 x=198 y=20 width=13 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=69 x=211 y=20 width=13 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=68 x=224 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=67 x=238 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=66 x=252 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=65 x=266 y=20 width=14 height=16 xoffset=-2 yoffset=1 xadvance=10 page=0 chnl=0 +char id=49 x=280 y=20 width=6 height=15 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=105 x=286 y=20 width=8 height=15 xoffset=-2 yoffset=2 xadvance=4 page=0 chnl=0 +char id=42 x=294 y=20 width=11 height=14 xoffset=0 yoffset=-1 xadvance=12 page=0 chnl=0 +char id=43 x=305 y=20 width=12 height=12 xoffset=0 yoffset=3 xadvance=12 page=0 chnl=0 +char id=59 x=317 y=20 width=4 height=12 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=0 +char id=122 x=321 y=20 width=9 height=12 xoffset=0 yoffset=5 xadvance=10 page=0 chnl=0 +char id=120 x=330 y=20 width=14 height=12 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=119 x=344 y=20 width=16 height=12 xoffset=-2 yoffset=5 xadvance=12 page=0 chnl=0 +char id=118 x=360 y=20 width=14 height=12 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=117 x=374 y=20 width=14 height=12 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=115 x=388 y=20 width=14 height=12 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=114 x=402 y=20 width=14 height=12 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=111 x=416 y=20 width=14 height=12 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=110 x=430 y=20 width=14 height=12 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=109 x=444 y=20 width=16 height=12 xoffset=-2 yoffset=5 xadvance=12 page=0 chnl=0 +char id=101 x=460 y=20 width=14 height=12 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=99 x=474 y=20 width=14 height=12 xoffset=-2 yoffset=5 xadvance=10 page=0 chnl=0 +char id=97 x=488 y=20 width=10 height=12 xoffset=0 yoffset=5 xadvance=10 page=0 chnl=0 +char id=62 x=498 y=20 width=7 height=10 xoffset=0 yoffset=5 xadvance=8 page=0 chnl=0 +char id=60 x=0 y=36 width=7 height=10 xoffset=0 yoffset=5 xadvance=8 page=0 chnl=0 +char id=58 x=7 y=36 width=4 height=10 xoffset=0 yoffset=5 xadvance=4 page=0 chnl=0 +char id=126 x=11 y=36 width=11 height=8 xoffset=0 yoffset=5 xadvance=12 page=0 chnl=0 +char id=61 x=22 y=36 width=12 height=8 xoffset=0 yoffset=5 xadvance=12 page=0 chnl=0 +char id=44 x=34 y=36 width=4 height=6 xoffset=0 yoffset=13 xadvance=4 page=0 chnl=0 +char id=39 x=38 y=36 width=4 height=6 xoffset=0 yoffset=-1 xadvance=6 page=0 chnl=0 +char id=96 x=42 y=36 width=7 height=6 xoffset=0 yoffset=-1 xadvance=8 page=0 chnl=0 +char id=34 x=49 y=36 width=8 height=6 xoffset=0 yoffset=-1 xadvance=10 page=0 chnl=0 +char id=94 x=57 y=36 width=9 height=5 xoffset=0 yoffset=2 xadvance=10 page=0 chnl=0 +char id=95 x=66 y=36 width=14 height=4 xoffset=0 yoffset=13 xadvance=14 page=0 chnl=0 +char id=45 x=80 y=36 width=12 height=4 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=0 +char id=46 x=92 y=36 width=4 height=4 xoffset=0 yoffset=13 xadvance=4 page=0 chnl=0 +kernings count=-1 diff --git a/desktop/assets/fonts/bauchaomaicha.png b/desktop/assets/fonts/bauchaomaicha.png new file mode 100644 index 0000000..ce00469 Binary files /dev/null and b/desktop/assets/fonts/bauchaomaicha.png differ diff --git a/desktop/assets/fonts/quigleyw.fnt b/desktop/assets/fonts/quigleyw.fnt new file mode 100644 index 0000000..fcd7e4b --- /dev/null +++ b/desktop/assets/fonts/quigleyw.fnt @@ -0,0 +1,275 @@ +info face="QuigleyWiggly" size=32 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=0,0 +common lineHeight=40 base=30 scaleW=512 scaleH=512 pages=1 packed=0 +page id=0 file="quigleyw.png" +chars count=81 +char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=30 xadvance=6 page=0 chnl=0 +char id=41 x=0 y=0 width=10 height=32 xoffset=0 yoffset=6 xadvance=9 page=0 chnl=0 +char id=40 x=10 y=0 width=10 height=32 xoffset=0 yoffset=6 xadvance=9 page=0 chnl=0 +char id=74 x=20 y=0 width=17 height=32 xoffset=0 yoffset=4 xadvance=15 page=0 chnl=0 +char id=102 x=37 y=0 width=11 height=30 xoffset=0 yoffset=8 xadvance=9 page=0 chnl=0 +char id=90 x=48 y=0 width=27 height=28 xoffset=0 yoffset=7 xadvance=25 page=0 chnl=0 +char id=89 x=75 y=0 width=21 height=28 xoffset=0 yoffset=9 xadvance=19 page=0 chnl=0 +char id=84 x=96 y=0 width=24 height=28 xoffset=0 yoffset=4 xadvance=23 page=0 chnl=0 +char id=82 x=120 y=0 width=27 height=28 xoffset=0 yoffset=8 xadvance=26 page=0 chnl=0 +char id=71 x=147 y=0 width=26 height=28 xoffset=-1 yoffset=7 xadvance=24 page=0 chnl=0 +char id=92 x=173 y=0 width=7 height=27 xoffset=0 yoffset=9 xadvance=5 page=0 chnl=0 +char id=47 x=180 y=0 width=7 height=27 xoffset=0 yoffset=7 xadvance=5 page=0 chnl=0 +char id=78 x=187 y=0 width=23 height=27 xoffset=-1 yoffset=8 xadvance=21 page=0 chnl=0 +char id=75 x=210 y=0 width=25 height=27 xoffset=0 yoffset=7 xadvance=24 page=0 chnl=0 +char id=80 x=235 y=0 width=30 height=26 xoffset=-1 yoffset=7 xadvance=27 page=0 chnl=0 +char id=77 x=265 y=0 width=28 height=26 xoffset=-1 yoffset=7 xadvance=26 page=0 chnl=0 +char id=76 x=293 y=0 width=27 height=26 xoffset=0 yoffset=5 xadvance=26 page=0 chnl=0 +char id=72 x=320 y=0 width=25 height=26 xoffset=-1 yoffset=8 xadvance=23 page=0 chnl=0 +char id=106 x=345 y=0 width=15 height=25 xoffset=0 yoffset=12 xadvance=9 page=0 chnl=0 +char id=88 x=360 y=0 width=23 height=25 xoffset=0 yoffset=7 xadvance=22 page=0 chnl=0 +char id=68 x=383 y=0 width=24 height=25 xoffset=0 yoffset=6 xadvance=22 page=0 chnl=0 +char id=66 x=407 y=0 width=28 height=25 xoffset=0 yoffset=9 xadvance=26 page=0 chnl=0 +char id=64 x=435 y=0 width=22 height=24 xoffset=1 yoffset=7 xadvance=22 page=0 chnl=0 +char id=108 x=457 y=0 width=10 height=24 xoffset=0 yoffset=7 xadvance=7 page=0 chnl=0 +char id=100 x=467 y=0 width=14 height=24 xoffset=0 yoffset=7 xadvance=12 page=0 chnl=0 +char id=98 x=481 y=0 width=10 height=24 xoffset=0 yoffset=7 xadvance=9 page=0 chnl=0 +char id=86 x=0 y=32 width=22 height=24 xoffset=0 yoffset=7 xadvance=20 page=0 chnl=0 +char id=70 x=22 y=32 width=24 height=24 xoffset=0 yoffset=7 xadvance=23 page=0 chnl=0 +char id=38 x=46 y=32 width=22 height=23 xoffset=0 yoffset=8 xadvance=22 page=0 chnl=0 +char id=36 x=68 y=32 width=11 height=23 xoffset=0 yoffset=8 xadvance=10 page=0 chnl=0 +char id=107 x=79 y=32 width=16 height=23 xoffset=0 yoffset=8 xadvance=12 page=0 chnl=0 +char id=104 x=95 y=32 width=16 height=23 xoffset=0 yoffset=8 xadvance=12 page=0 chnl=0 +char id=87 x=111 y=32 width=30 height=23 xoffset=0 yoffset=8 xadvance=28 page=0 chnl=0 +char id=83 x=141 y=32 width=27 height=23 xoffset=0 yoffset=8 xadvance=26 page=0 chnl=0 +char id=81 x=168 y=32 width=25 height=23 xoffset=0 yoffset=7 xadvance=24 page=0 chnl=0 +char id=79 x=193 y=32 width=25 height=23 xoffset=0 yoffset=8 xadvance=23 page=0 chnl=0 +char id=73 x=218 y=32 width=22 height=23 xoffset=0 yoffset=8 xadvance=20 page=0 chnl=0 +char id=69 x=240 y=32 width=22 height=23 xoffset=0 yoffset=8 xadvance=20 page=0 chnl=0 +char id=33 x=262 y=32 width=5 height=22 xoffset=0 yoffset=9 xadvance=4 page=0 chnl=0 +char id=55 x=267 y=32 width=11 height=22 xoffset=0 yoffset=9 xadvance=10 page=0 chnl=0 +char id=53 x=278 y=32 width=12 height=22 xoffset=0 yoffset=9 xadvance=11 page=0 chnl=0 +char id=50 x=290 y=32 width=13 height=22 xoffset=0 yoffset=9 xadvance=12 page=0 chnl=0 +char id=112 x=303 y=32 width=14 height=22 xoffset=0 yoffset=18 xadvance=12 page=0 chnl=0 +char id=85 x=317 y=32 width=24 height=22 xoffset=0 yoffset=9 xadvance=22 page=0 chnl=0 +char id=67 x=341 y=32 width=20 height=22 xoffset=0 yoffset=9 xadvance=18 page=0 chnl=0 +char id=65 x=361 y=32 width=23 height=22 xoffset=0 yoffset=9 xadvance=21 page=0 chnl=0 +char id=63 x=384 y=32 width=12 height=21 xoffset=0 yoffset=10 xadvance=11 page=0 chnl=0 +char id=48 x=396 y=32 width=15 height=21 xoffset=0 yoffset=10 xadvance=13 page=0 chnl=0 +char id=57 x=411 y=32 width=13 height=21 xoffset=0 yoffset=10 xadvance=12 page=0 chnl=0 +char id=56 x=424 y=32 width=12 height=21 xoffset=0 yoffset=10 xadvance=11 page=0 chnl=0 +char id=54 x=436 y=32 width=13 height=21 xoffset=0 yoffset=10 xadvance=12 page=0 chnl=0 +char id=52 x=449 y=32 width=14 height=21 xoffset=0 yoffset=10 xadvance=13 page=0 chnl=0 +char id=51 x=463 y=32 width=12 height=21 xoffset=0 yoffset=10 xadvance=12 page=0 chnl=0 +char id=49 x=475 y=32 width=7 height=21 xoffset=0 yoffset=10 xadvance=8 page=0 chnl=0 +char id=121 x=482 y=32 width=16 height=21 xoffset=0 yoffset=18 xadvance=12 page=0 chnl=0 +char id=113 x=0 y=56 width=16 height=20 xoffset=0 yoffset=18 xadvance=12 page=0 chnl=0 +char id=105 x=16 y=56 width=9 height=20 xoffset=0 yoffset=11 xadvance=6 page=0 chnl=0 +char id=103 x=25 y=56 width=16 height=20 xoffset=0 yoffset=17 xadvance=11 page=0 chnl=0 +char id=116 x=41 y=56 width=14 height=19 xoffset=0 yoffset=12 xadvance=10 page=0 chnl=0 +char id=122 x=55 y=56 width=11 height=14 xoffset=0 yoffset=17 xadvance=9 page=0 chnl=0 +char id=119 x=66 y=56 width=17 height=14 xoffset=0 yoffset=17 xadvance=15 page=0 chnl=0 +char id=114 x=83 y=56 width=12 height=14 xoffset=0 yoffset=17 xadvance=11 page=0 chnl=0 +char id=101 x=95 y=56 width=13 height=14 xoffset=0 yoffset=17 xadvance=9 page=0 chnl=0 +char id=59 x=108 y=56 width=6 height=13 xoffset=-1 yoffset=18 xadvance=4 page=0 chnl=0 +char id=120 x=114 y=56 width=13 height=13 xoffset=0 yoffset=18 xadvance=9 page=0 chnl=0 +char id=118 x=127 y=56 width=11 height=13 xoffset=0 yoffset=18 xadvance=9 page=0 chnl=0 +char id=117 x=138 y=56 width=16 height=13 xoffset=0 yoffset=18 xadvance=13 page=0 chnl=0 +char id=115 x=154 y=56 width=11 height=13 xoffset=-1 yoffset=18 xadvance=8 page=0 chnl=0 +char id=111 x=165 y=56 width=15 height=13 xoffset=0 yoffset=18 xadvance=11 page=0 chnl=0 +char id=110 x=180 y=56 width=15 height=13 xoffset=0 yoffset=18 xadvance=13 page=0 chnl=0 +char id=99 x=195 y=56 width=13 height=13 xoffset=0 yoffset=18 xadvance=9 page=0 chnl=0 +char id=109 x=208 y=56 width=24 height=12 xoffset=0 yoffset=19 xadvance=18 page=0 chnl=0 +char id=97 x=232 y=56 width=15 height=12 xoffset=-1 yoffset=19 xadvance=12 page=0 chnl=0 +char id=58 x=247 y=56 width=4 height=9 xoffset=0 yoffset=18 xadvance=4 page=0 chnl=0 +char id=44 x=251 y=56 width=5 height=8 xoffset=0 yoffset=26 xadvance=4 page=0 chnl=0 +char id=42 x=256 y=56 width=6 height=6 xoffset=0 yoffset=6 xadvance=5 page=0 chnl=0 +char id=39 x=262 y=56 width=5 height=6 xoffset=0 yoffset=8 xadvance=3 page=0 chnl=0 +char id=96 x=267 y=56 width=8 height=6 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=0 +char id=34 x=275 y=56 width=7 height=6 xoffset=0 yoffset=8 xadvance=6 page=0 chnl=0 +char id=46 x=282 y=56 width=4 height=5 xoffset=0 yoffset=26 xadvance=4 page=0 chnl=0 +char id=95 x=286 y=56 width=17 height=4 xoffset=-1 yoffset=29 xadvance=15 page=0 chnl=0 +char id=45 x=303 y=56 width=5 height=3 xoffset=0 yoffset=20 xadvance=4 page=0 chnl=0 +kernings count=187 +kerning first=102 second=97 amount=-1 +kerning first=102 second=99 amount=-1 +kerning first=102 second=100 amount=-1 +kerning first=102 second=101 amount=-1 +kerning first=102 second=102 amount=-2 +kerning first=102 second=106 amount=-3 +kerning first=102 second=111 amount=-1 +kerning first=102 second=115 amount=-1 +kerning first=102 second=116 amount=-2 +kerning first=102 second=120 amount=-1 +kerning first=90 second=97 amount=-6 +kerning first=90 second=101 amount=-7 +kerning first=90 second=104 amount=-2 +kerning first=90 second=105 amount=-3 +kerning first=90 second=111 amount=-7 +kerning first=90 second=121 amount=-2 +kerning first=89 second=101 amount=-1 +kerning first=89 second=117 amount=-1 +kerning first=84 second=97 amount=-6 +kerning first=84 second=101 amount=-6 +kerning first=84 second=104 amount=-1 +kerning first=84 second=105 amount=-1 +kerning first=84 second=111 amount=-5 +kerning first=84 second=114 amount=-5 +kerning first=84 second=117 amount=-6 +kerning first=84 second=118 amount=-6 +kerning first=84 second=121 amount=-6 +kerning first=84 second=122 amount=-5 +kerning first=82 second=97 amount=-3 +kerning first=82 second=101 amount=-3 +kerning first=82 second=104 amount=-1 +kerning first=82 second=105 amount=-1 +kerning first=82 second=111 amount=-4 +kerning first=82 second=117 amount=-3 +kerning first=82 second=121 amount=-2 +kerning first=71 second=97 amount=-2 +kerning first=71 second=101 amount=-2 +kerning first=71 second=104 amount=-1 +kerning first=71 second=105 amount=-1 +kerning first=71 second=108 amount=-1 +kerning first=71 second=110 amount=-2 +kerning first=71 second=111 amount=-2 +kerning first=71 second=114 amount=-3 +kerning first=71 second=117 amount=-2 +kerning first=71 second=121 amount=-2 +kerning first=78 second=97 amount=-2 +kerning first=78 second=101 amount=-2 +kerning first=78 second=111 amount=-2 +kerning first=78 second=117 amount=-2 +kerning first=78 second=121 amount=-2 +kerning first=75 second=97 amount=-1 +kerning first=75 second=101 amount=-2 +kerning first=75 second=105 amount=-1 +kerning first=75 second=108 amount=-1 +kerning first=75 second=111 amount=-1 +kerning first=75 second=114 amount=-2 +kerning first=75 second=117 amount=-1 +kerning first=75 second=121 amount=-1 +kerning first=80 second=97 amount=-2 +kerning first=80 second=101 amount=-1 +kerning first=80 second=110 amount=-1 +kerning first=80 second=111 amount=-2 +kerning first=80 second=117 amount=-1 +kerning first=80 second=121 amount=-1 +kerning first=106 second=102 amount=-2 +kerning first=106 second=106 amount=-3 +kerning first=106 second=116 amount=-2 +kerning first=66 second=97 amount=-2 +kerning first=66 second=101 amount=-2 +kerning first=66 second=111 amount=-2 +kerning first=66 second=117 amount=-2 +kerning first=66 second=121 amount=-2 +kerning first=108 second=102 amount=-3 +kerning first=108 second=106 amount=-2 +kerning first=108 second=116 amount=-2 +kerning first=100 second=102 amount=-2 +kerning first=100 second=106 amount=-3 +kerning first=100 second=116 amount=-2 +kerning first=98 second=102 amount=-2 +kerning first=98 second=106 amount=-3 +kerning first=98 second=116 amount=-1 +kerning first=70 second=97 amount=-5 +kerning first=70 second=101 amount=-5 +kerning first=70 second=105 amount=-4 +kerning first=70 second=108 amount=-1 +kerning first=70 second=111 amount=-5 +kerning first=70 second=114 amount=-3 +kerning first=70 second=117 amount=-4 +kerning first=70 second=121 amount=-4 +kerning first=107 second=102 amount=-3 +kerning first=107 second=106 amount=-3 +kerning first=107 second=116 amount=-2 +kerning first=104 second=102 amount=-3 +kerning first=104 second=106 amount=-3 +kerning first=104 second=116 amount=-2 +kerning first=87 second=97 amount=-2 +kerning first=87 second=101 amount=-2 +kerning first=87 second=111 amount=-2 +kerning first=87 second=114 amount=-2 +kerning first=87 second=117 amount=-2 +kerning first=87 second=121 amount=-2 +kerning first=83 second=102 amount=-1 +kerning first=79 second=100 amount=-1 +kerning first=79 second=102 amount=-2 +kerning first=79 second=103 amount=-1 +kerning first=79 second=106 amount=-3 +kerning first=79 second=111 amount=-1 +kerning first=79 second=115 amount=-1 +kerning first=79 second=120 amount=-1 +kerning first=73 second=100 amount=-1 +kerning first=73 second=102 amount=-2 +kerning first=73 second=106 amount=-3 +kerning first=73 second=111 amount=-1 +kerning first=73 second=115 amount=-1 +kerning first=73 second=120 amount=-1 +kerning first=69 second=102 amount=-2 +kerning first=69 second=105 amount=-1 +kerning first=69 second=106 amount=-3 +kerning first=69 second=116 amount=-2 +kerning first=69 second=120 amount=-1 +kerning first=112 second=102 amount=-3 +kerning first=112 second=106 amount=-3 +kerning first=112 second=116 amount=-2 +kerning first=85 second=102 amount=-2 +kerning first=85 second=106 amount=-3 +kerning first=85 second=116 amount=-2 +kerning first=65 second=102 amount=-1 +kerning first=65 second=106 amount=-3 +kerning first=65 second=116 amount=-2 +kerning first=121 second=102 amount=-2 +kerning first=121 second=106 amount=-3 +kerning first=121 second=116 amount=-2 +kerning first=113 second=102 amount=-3 +kerning first=113 second=106 amount=-3 +kerning first=113 second=116 amount=-2 +kerning first=105 second=102 amount=-2 +kerning first=105 second=106 amount=-2 +kerning first=105 second=116 amount=-1 +kerning first=103 second=102 amount=-2 +kerning first=103 second=106 amount=-2 +kerning first=103 second=115 amount=-1 +kerning first=103 second=116 amount=-2 +kerning first=116 second=102 amount=-3 +kerning first=116 second=106 amount=-3 +kerning first=116 second=116 amount=-3 +kerning first=122 second=102 amount=-1 +kerning first=122 second=106 amount=-2 +kerning first=119 second=102 amount=-3 +kerning first=119 second=106 amount=-3 +kerning first=119 second=116 amount=-2 +kerning first=114 second=97 amount=-1 +kerning first=114 second=102 amount=-4 +kerning first=114 second=106 amount=-3 +kerning first=114 second=116 amount=-3 +kerning first=101 second=102 amount=-2 +kerning first=101 second=106 amount=-2 +kerning first=101 second=116 amount=-1 +kerning first=120 second=102 amount=-3 +kerning first=120 second=106 amount=-3 +kerning first=120 second=116 amount=-2 +kerning first=118 second=102 amount=-3 +kerning first=118 second=106 amount=-3 +kerning first=118 second=116 amount=-2 +kerning first=117 second=97 amount=-1 +kerning first=117 second=102 amount=-4 +kerning first=117 second=106 amount=-3 +kerning first=117 second=116 amount=-3 +kerning first=115 second=102 amount=-3 +kerning first=115 second=106 amount=-3 +kerning first=115 second=116 amount=-2 +kerning first=111 second=102 amount=-4 +kerning first=111 second=106 amount=-3 +kerning first=111 second=116 amount=-3 +kerning first=110 second=97 amount=-1 +kerning first=110 second=102 amount=-4 +kerning first=110 second=106 amount=-3 +kerning first=110 second=116 amount=-3 +kerning first=99 second=102 amount=-4 +kerning first=99 second=106 amount=-3 +kerning first=99 second=116 amount=-2 +kerning first=99 second=120 amount=-1 +kerning first=109 second=102 amount=-2 +kerning first=109 second=106 amount=-3 +kerning first=109 second=116 amount=-2 +kerning first=97 second=102 amount=-3 +kerning first=97 second=106 amount=-3 +kerning first=97 second=116 amount=-2 +kerning first=97 second=120 amount=-1 diff --git a/desktop/assets/fonts/quigleyw.png b/desktop/assets/fonts/quigleyw.png new file mode 100644 index 0000000..31d72e2 Binary files /dev/null and b/desktop/assets/fonts/quigleyw.png differ diff --git a/desktop/assets/icon.ico b/desktop/assets/icon.ico new file mode 100644 index 0000000..685b48d Binary files /dev/null and b/desktop/assets/icon.ico differ diff --git a/desktop/assets/icon32.png b/desktop/assets/icon32.png new file mode 100644 index 0000000..b7ff94f Binary files /dev/null and b/desktop/assets/icon32.png differ diff --git a/desktop/assets/logo.png b/desktop/assets/logo.png new file mode 100644 index 0000000..7b913ed Binary files /dev/null and b/desktop/assets/logo.png differ diff --git a/desktop/assets/skin/default.fnt b/desktop/assets/skin/default.fnt new file mode 100644 index 0000000..433f1e5 --- /dev/null +++ b/desktop/assets/skin/default.fnt @@ -0,0 +1,101 @@ +info face="Droid Sans" size=17 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=1,1 +common lineHeight=20 base=18 scaleW=256 scaleH=128 pages=1 packed=0 +page id=0 file="default.png" +chars count=96 +char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=16 xadvance=4 page=0 chnl=0 +char id=124 x=0 y=0 width=6 height=20 xoffset=1 yoffset=3 xadvance=9 page=0 chnl=0 +char id=106 x=6 y=0 width=9 height=20 xoffset=-4 yoffset=3 xadvance=4 page=0 chnl=0 +char id=81 x=15 y=0 width=15 height=19 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=0 +char id=74 x=30 y=0 width=11 height=19 xoffset=-5 yoffset=3 xadvance=4 page=0 chnl=0 +char id=125 x=41 y=0 width=10 height=18 xoffset=-3 yoffset=3 xadvance=6 page=0 chnl=0 +char id=123 x=51 y=0 width=10 height=18 xoffset=-3 yoffset=3 xadvance=6 page=0 chnl=0 +char id=93 x=61 y=0 width=8 height=18 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 +char id=91 x=69 y=0 width=8 height=18 xoffset=-2 yoffset=3 xadvance=5 page=0 chnl=0 +char id=41 x=77 y=0 width=9 height=18 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 +char id=40 x=86 y=0 width=9 height=18 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 +char id=64 x=95 y=0 width=18 height=17 xoffset=-3 yoffset=3 xadvance=14 page=0 chnl=0 +char id=121 x=113 y=0 width=13 height=17 xoffset=-3 yoffset=6 xadvance=8 page=0 chnl=0 +char id=113 x=126 y=0 width=13 height=17 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 +char id=112 x=139 y=0 width=13 height=17 xoffset=-2 yoffset=6 xadvance=9 page=0 chnl=0 +char id=103 x=152 y=0 width=13 height=17 xoffset=-3 yoffset=6 xadvance=8 page=0 chnl=0 +char id=38 x=165 y=0 width=16 height=16 xoffset=-3 yoffset=3 xadvance=11 page=0 chnl=0 +char id=37 x=181 y=0 width=18 height=16 xoffset=-3 yoffset=3 xadvance=14 page=0 chnl=0 +char id=36 x=199 y=0 width=12 height=16 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 +char id=63 x=211 y=0 width=11 height=16 xoffset=-3 yoffset=3 xadvance=7 page=0 chnl=0 +char id=33 x=222 y=0 width=7 height=16 xoffset=-2 yoffset=3 xadvance=4 page=0 chnl=0 +char id=48 x=229 y=0 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=57 x=242 y=0 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=56 x=0 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=54 x=13 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=53 x=26 y=20 width=12 height=16 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 +char id=51 x=38 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=100 x=51 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=98 x=64 y=20 width=13 height=16 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 +char id=85 x=77 y=20 width=14 height=16 xoffset=-2 yoffset=3 xadvance=11 page=0 chnl=0 +char id=83 x=91 y=20 width=13 height=16 xoffset=-3 yoffset=3 xadvance=8 page=0 chnl=0 +char id=79 x=104 y=20 width=15 height=16 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=0 +char id=71 x=119 y=20 width=14 height=16 xoffset=-2 yoffset=3 xadvance=11 page=0 chnl=0 +char id=67 x=133 y=20 width=13 height=16 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 +char id=127 x=146 y=20 width=12 height=15 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 +char id=35 x=158 y=20 width=15 height=15 xoffset=-3 yoffset=3 xadvance=10 page=0 chnl=0 +char id=92 x=173 y=20 width=11 height=15 xoffset=-3 yoffset=3 xadvance=6 page=0 chnl=0 +char id=47 x=184 y=20 width=11 height=15 xoffset=-3 yoffset=3 xadvance=6 page=0 chnl=0 +char id=59 x=195 y=20 width=8 height=15 xoffset=-3 yoffset=6 xadvance=4 page=0 chnl=0 +char id=55 x=203 y=20 width=13 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=52 x=216 y=20 width=14 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=50 x=230 y=20 width=13 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=49 x=243 y=20 width=9 height=15 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 +char id=116 x=0 y=36 width=10 height=15 xoffset=-3 yoffset=4 xadvance=5 page=0 chnl=0 +char id=108 x=10 y=36 width=6 height=15 xoffset=-2 yoffset=3 xadvance=4 page=0 chnl=0 +char id=107 x=16 y=36 width=12 height=15 xoffset=-2 yoffset=3 xadvance=8 page=0 chnl=0 +char id=105 x=28 y=36 width=7 height=15 xoffset=-2 yoffset=3 xadvance=4 page=0 chnl=0 +char id=104 x=35 y=36 width=12 height=15 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 +char id=102 x=47 y=36 width=11 height=15 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 +char id=90 x=58 y=36 width=13 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=89 x=71 y=36 width=13 height=15 xoffset=-3 yoffset=3 xadvance=8 page=0 chnl=0 +char id=88 x=84 y=36 width=14 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=87 x=98 y=36 width=19 height=15 xoffset=-3 yoffset=3 xadvance=15 page=0 chnl=0 +char id=86 x=117 y=36 width=14 height=15 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=84 x=131 y=36 width=13 height=15 xoffset=-3 yoffset=3 xadvance=8 page=0 chnl=0 +char id=82 x=144 y=36 width=13 height=15 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 +char id=80 x=157 y=36 width=12 height=15 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 +char id=78 x=169 y=36 width=14 height=15 xoffset=-2 yoffset=3 xadvance=12 page=0 chnl=0 +char id=77 x=183 y=36 width=17 height=15 xoffset=-2 yoffset=3 xadvance=14 page=0 chnl=0 +char id=76 x=200 y=36 width=11 height=15 xoffset=-2 yoffset=3 xadvance=8 page=0 chnl=0 +char id=75 x=211 y=36 width=13 height=15 xoffset=-2 yoffset=3 xadvance=9 page=0 chnl=0 +char id=73 x=224 y=36 width=10 height=15 xoffset=-3 yoffset=3 xadvance=5 page=0 chnl=0 +char id=72 x=234 y=36 width=14 height=15 xoffset=-2 yoffset=3 xadvance=11 page=0 chnl=0 +char id=70 x=0 y=51 width=11 height=15 xoffset=-2 yoffset=3 xadvance=8 page=0 chnl=0 +char id=69 x=11 y=51 width=11 height=15 xoffset=-2 yoffset=3 xadvance=8 page=0 chnl=0 +char id=68 x=22 y=51 width=14 height=15 xoffset=-2 yoffset=3 xadvance=11 page=0 chnl=0 +char id=66 x=36 y=51 width=13 height=15 xoffset=-2 yoffset=3 xadvance=10 page=0 chnl=0 +char id=65 x=49 y=51 width=15 height=15 xoffset=-3 yoffset=3 xadvance=10 page=0 chnl=0 +char id=58 x=64 y=51 width=7 height=13 xoffset=-2 yoffset=6 xadvance=4 page=0 chnl=0 +char id=117 x=71 y=51 width=12 height=13 xoffset=-2 yoffset=6 xadvance=10 page=0 chnl=0 +char id=115 x=83 y=51 width=11 height=13 xoffset=-3 yoffset=6 xadvance=7 page=0 chnl=0 +char id=111 x=94 y=51 width=13 height=13 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 +char id=101 x=107 y=51 width=13 height=13 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 +char id=99 x=120 y=51 width=12 height=13 xoffset=-3 yoffset=6 xadvance=7 page=0 chnl=0 +char id=97 x=132 y=51 width=12 height=13 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 +char id=60 x=144 y=51 width=13 height=12 xoffset=-3 yoffset=5 xadvance=9 page=0 chnl=0 +char id=122 x=157 y=51 width=11 height=12 xoffset=-3 yoffset=6 xadvance=7 page=0 chnl=0 +char id=120 x=168 y=51 width=13 height=12 xoffset=-3 yoffset=6 xadvance=8 page=0 chnl=0 +char id=119 x=181 y=51 width=17 height=12 xoffset=-3 yoffset=6 xadvance=12 page=0 chnl=0 +char id=118 x=198 y=51 width=13 height=12 xoffset=-3 yoffset=6 xadvance=8 page=0 chnl=0 +char id=114 x=211 y=51 width=10 height=12 xoffset=-2 yoffset=6 xadvance=6 page=0 chnl=0 +char id=110 x=221 y=51 width=12 height=12 xoffset=-2 yoffset=6 xadvance=10 page=0 chnl=0 +char id=109 x=233 y=51 width=17 height=12 xoffset=-2 yoffset=6 xadvance=15 page=0 chnl=0 +char id=94 x=0 y=66 width=13 height=11 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=62 x=13 y=66 width=13 height=11 xoffset=-3 yoffset=5 xadvance=9 page=0 chnl=0 +char id=42 x=26 y=66 width=13 height=10 xoffset=-3 yoffset=3 xadvance=9 page=0 chnl=0 +char id=43 x=39 y=66 width=13 height=10 xoffset=-3 yoffset=6 xadvance=9 page=0 chnl=0 +char id=61 x=52 y=66 width=13 height=8 xoffset=-3 yoffset=7 xadvance=9 page=0 chnl=0 +char id=39 x=65 y=66 width=6 height=8 xoffset=-2 yoffset=3 xadvance=3 page=0 chnl=0 +char id=34 x=71 y=66 width=9 height=8 xoffset=-2 yoffset=3 xadvance=6 page=0 chnl=0 +char id=44 x=80 y=66 width=8 height=7 xoffset=-3 yoffset=14 xadvance=4 page=0 chnl=0 +char id=126 x=88 y=66 width=13 height=6 xoffset=-3 yoffset=8 xadvance=9 page=0 chnl=0 +char id=46 x=101 y=66 width=7 height=6 xoffset=-2 yoffset=13 xadvance=4 page=0 chnl=0 +char id=96 x=108 y=66 width=8 height=6 xoffset=0 yoffset=2 xadvance=9 page=0 chnl=0 +char id=45 x=116 y=66 width=9 height=5 xoffset=-3 yoffset=10 xadvance=5 page=0 chnl=0 +char id=95 x=125 y=66 width=13 height=4 xoffset=-4 yoffset=17 xadvance=6 page=0 chnl=0 +kernings count=-1 \ No newline at end of file diff --git a/desktop/assets/skin/default.png b/desktop/assets/skin/default.png new file mode 100644 index 0000000..ca368e0 Binary files /dev/null and b/desktop/assets/skin/default.png differ diff --git a/desktop/assets/skin/tiny.fnt b/desktop/assets/skin/tiny.fnt new file mode 100644 index 0000000..78f669a --- /dev/null +++ b/desktop/assets/skin/tiny.fnt @@ -0,0 +1,100 @@ +info face="Droid Sans" size=11 bold=0 italic=0 charset="" unicode=0 stretchH=100 smooth=1 aa=1 padding=0,0,0,0 spacing=0,0 +common lineHeight=14 base=11 scaleW=512 scaleH=512 pages=1 packed=0 +page id=0 file="tiny.png" +chars count=94 +char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=11 xadvance=3 page=0 chnl=0 +char id=124 x=0 y=0 width=2 height=13 xoffset=2 yoffset=2 xadvance=5 page=0 chnl=0 +char id=106 x=2 y=0 width=4 height=13 xoffset=-1 yoffset=2 xadvance=2 page=0 chnl=0 +char id=93 x=6 y=0 width=4 height=12 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=0 +char id=91 x=10 y=0 width=4 height=12 xoffset=1 yoffset=2 xadvance=3 page=0 chnl=0 +char id=41 x=14 y=0 width=4 height=12 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=0 +char id=40 x=18 y=0 width=3 height=12 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=0 +char id=81 x=21 y=0 width=8 height=12 xoffset=1 yoffset=2 xadvance=9 page=0 chnl=0 +char id=74 x=29 y=0 width=5 height=12 xoffset=-1 yoffset=2 xadvance=3 page=0 chnl=0 +char id=36 x=34 y=0 width=6 height=11 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=125 x=40 y=0 width=5 height=11 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=0 +char id=123 x=45 y=0 width=5 height=11 xoffset=1 yoffset=3 xadvance=4 page=0 chnl=0 +char id=121 x=50 y=0 width=8 height=11 xoffset=-1 yoffset=4 xadvance=6 page=0 chnl=0 +char id=113 x=58 y=0 width=7 height=11 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=0 +char id=112 x=65 y=0 width=7 height=11 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=0 +char id=103 x=72 y=0 width=7 height=11 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=0 +char id=35 x=79 y=0 width=9 height=10 xoffset=0 yoffset=2 xadvance=7 page=0 chnl=0 +char id=37 x=88 y=0 width=9 height=10 xoffset=0 yoffset=2 xadvance=9 page=0 chnl=0 +char id=92 x=97 y=0 width=7 height=10 xoffset=-1 yoffset=2 xadvance=4 page=0 chnl=0 +char id=64 x=104 y=0 width=10 height=10 xoffset=1 yoffset=3 xadvance=10 page=0 chnl=0 +char id=47 x=114 y=0 width=7 height=10 xoffset=-1 yoffset=2 xadvance=4 page=0 chnl=0 +char id=59 x=121 y=0 width=3 height=10 xoffset=0 yoffset=4 xadvance=3 page=0 chnl=0 +char id=33 x=124 y=0 width=4 height=10 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=0 +char id=48 x=128 y=0 width=7 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=57 x=135 y=0 width=7 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=56 x=142 y=0 width=7 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=55 x=149 y=0 width=7 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=54 x=156 y=0 width=7 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=53 x=163 y=0 width=6 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=52 x=169 y=0 width=7 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=51 x=176 y=0 width=7 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=50 x=183 y=0 width=7 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=49 x=190 y=0 width=4 height=10 xoffset=1 yoffset=2 xadvance=6 page=0 chnl=0 +char id=108 x=194 y=0 width=2 height=10 xoffset=0 yoffset=2 xadvance=2 page=0 chnl=0 +char id=107 x=196 y=0 width=6 height=10 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=0 +char id=105 x=202 y=0 width=4 height=10 xoffset=-1 yoffset=2 xadvance=2 page=0 chnl=0 +char id=104 x=206 y=0 width=7 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=102 x=213 y=0 width=5 height=10 xoffset=0 yoffset=2 xadvance=4 page=0 chnl=0 +char id=100 x=218 y=0 width=7 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=98 x=225 y=0 width=7 height=10 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=90 x=232 y=0 width=7 height=10 xoffset=1 yoffset=2 xadvance=7 page=0 chnl=0 +char id=89 x=239 y=0 width=10 height=10 xoffset=-1 yoffset=2 xadvance=7 page=0 chnl=0 +char id=88 x=249 y=0 width=9 height=10 xoffset=-1 yoffset=2 xadvance=6 page=0 chnl=0 +char id=87 x=258 y=0 width=12 height=10 xoffset=-1 yoffset=2 xadvance=9 page=0 chnl=0 +char id=86 x=270 y=0 width=10 height=10 xoffset=-1 yoffset=2 xadvance=7 page=0 chnl=0 +char id=85 x=280 y=0 width=8 height=10 xoffset=1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=84 x=288 y=0 width=7 height=10 xoffset=0 yoffset=2 xadvance=5 page=0 chnl=0 +char id=82 x=295 y=0 width=7 height=10 xoffset=1 yoffset=2 xadvance=7 page=0 chnl=0 +char id=80 x=302 y=0 width=5 height=10 xoffset=1 yoffset=2 xadvance=6 page=0 chnl=0 +char id=79 x=307 y=0 width=8 height=10 xoffset=1 yoffset=2 xadvance=9 page=0 chnl=0 +char id=78 x=315 y=0 width=8 height=10 xoffset=1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=77 x=323 y=0 width=10 height=10 xoffset=1 yoffset=2 xadvance=10 page=0 chnl=0 +char id=76 x=333 y=0 width=5 height=10 xoffset=1 yoffset=2 xadvance=5 page=0 chnl=0 +char id=75 x=338 y=0 width=8 height=10 xoffset=1 yoffset=2 xadvance=7 page=0 chnl=0 +char id=73 x=346 y=0 width=4 height=10 xoffset=0 yoffset=2 xadvance=3 page=0 chnl=0 +char id=72 x=350 y=0 width=8 height=10 xoffset=1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=71 x=358 y=0 width=8 height=10 xoffset=1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=70 x=366 y=0 width=6 height=10 xoffset=1 yoffset=2 xadvance=5 page=0 chnl=0 +char id=69 x=372 y=0 width=6 height=10 xoffset=1 yoffset=2 xadvance=6 page=0 chnl=0 +char id=68 x=378 y=0 width=8 height=10 xoffset=1 yoffset=2 xadvance=8 page=0 chnl=0 +char id=67 x=386 y=0 width=8 height=10 xoffset=1 yoffset=2 xadvance=7 page=0 chnl=0 +char id=66 x=394 y=0 width=7 height=10 xoffset=1 yoffset=2 xadvance=7 page=0 chnl=0 +char id=65 x=401 y=0 width=10 height=10 xoffset=-1 yoffset=2 xadvance=7 page=0 chnl=0 +char id=38 x=411 y=0 width=8 height=9 xoffset=0 yoffset=3 xadvance=8 page=0 chnl=0 +char id=63 x=419 y=0 width=5 height=9 xoffset=0 yoffset=3 xadvance=5 page=0 chnl=0 +char id=116 x=424 y=0 width=5 height=9 xoffset=0 yoffset=3 xadvance=4 page=0 chnl=0 +char id=83 x=429 y=0 width=7 height=9 xoffset=0 yoffset=3 xadvance=6 page=0 chnl=0 +char id=58 x=436 y=0 width=2 height=8 xoffset=1 yoffset=4 xadvance=3 page=0 chnl=0 +char id=122 x=438 y=0 width=6 height=8 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=0 +char id=120 x=444 y=0 width=6 height=8 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=0 +char id=119 x=450 y=0 width=10 height=8 xoffset=-1 yoffset=4 xadvance=8 page=0 chnl=0 +char id=118 x=460 y=0 width=8 height=8 xoffset=-1 yoffset=4 xadvance=6 page=0 chnl=0 +char id=117 x=468 y=0 width=7 height=8 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=0 +char id=115 x=475 y=0 width=6 height=8 xoffset=-1 yoffset=4 xadvance=5 page=0 chnl=0 +char id=114 x=481 y=0 width=4 height=8 xoffset=0 yoffset=4 xadvance=4 page=0 chnl=0 +char id=111 x=485 y=0 width=7 height=8 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=0 +char id=110 x=492 y=0 width=7 height=8 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=0 +char id=109 x=499 y=0 width=11 height=8 xoffset=0 yoffset=4 xadvance=10 page=0 chnl=0 +char id=101 x=0 y=13 width=7 height=8 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=0 +char id=99 x=7 y=13 width=5 height=8 xoffset=0 yoffset=4 xadvance=5 page=0 chnl=0 +char id=97 x=12 y=13 width=7 height=8 xoffset=0 yoffset=4 xadvance=6 page=0 chnl=0 +char id=42 x=19 y=13 width=8 height=7 xoffset=-1 yoffset=2 xadvance=6 page=0 chnl=0 +char id=43 x=27 y=13 width=7 height=7 xoffset=-1 yoffset=4 xadvance=6 page=0 chnl=0 +char id=94 x=34 y=13 width=7 height=7 xoffset=0 yoffset=2 xadvance=6 page=0 chnl=0 +char id=62 x=41 y=13 width=6 height=6 xoffset=1 yoffset=5 xadvance=6 page=0 chnl=0 +char id=60 x=47 y=13 width=6 height=6 xoffset=1 yoffset=5 xadvance=6 page=0 chnl=0 +char id=61 x=53 y=13 width=6 height=5 xoffset=1 yoffset=5 xadvance=6 page=0 chnl=0 +char id=44 x=59 y=13 width=3 height=5 xoffset=0 yoffset=9 xadvance=3 page=0 chnl=0 +char id=39 x=62 y=13 width=3 height=5 xoffset=1 yoffset=2 xadvance=3 page=0 chnl=0 +char id=34 x=65 y=13 width=5 height=5 xoffset=1 yoffset=2 xadvance=5 page=0 chnl=0 +char id=46 x=70 y=13 width=2 height=4 xoffset=1 yoffset=8 xadvance=3 page=0 chnl=0 +char id=96 x=72 y=13 width=4 height=4 xoffset=2 yoffset=1 xadvance=6 page=0 chnl=0 +char id=126 x=76 y=13 width=6 height=3 xoffset=1 yoffset=6 xadvance=6 page=0 chnl=0 +char id=95 x=82 y=13 width=7 height=3 xoffset=0 yoffset=11 xadvance=5 page=0 chnl=0 +char id=45 x=89 y=13 width=5 height=3 xoffset=0 yoffset=7 xadvance=4 page=0 chnl=0 +kernings count=-1 diff --git a/desktop/assets/skin/tiny.png b/desktop/assets/skin/tiny.png new file mode 100644 index 0000000..8404c58 Binary files /dev/null and b/desktop/assets/skin/tiny.png differ diff --git a/desktop/assets/skin/uiskin.atlas b/desktop/assets/skin/uiskin.atlas new file mode 100644 index 0000000..a51f7bf --- /dev/null +++ b/desktop/assets/skin/uiskin.atlas @@ -0,0 +1,199 @@ +uiskin.png +size: 256,128 +format: RGBA8888 +filter: Linear,Linear +repeat: none +check-off + rotate: false + xy: 11, 5 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +textfield + rotate: false + xy: 11, 5 + size: 14, 14 + split: 3, 3, 3, 3 + orig: 14, 14 + offset: 0, 0 + index: -1 +check-on + rotate: false + xy: 125, 35 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +cursor + rotate: false + xy: 23, 1 + size: 3, 3 + split: 1, 1, 1, 1 + orig: 3, 3 + offset: 0, 0 + index: -1 +default + rotate: false + xy: 1, 50 + size: 254, 77 + orig: 254, 77 + offset: 0, 0 + index: -1 +default-pane + rotate: false + xy: 11, 1 + size: 5, 3 + split: 1, 1, 1, 1 + orig: 5, 3 + offset: 0, 0 + index: -1 +default-rect-pad + rotate: false + xy: 11, 1 + size: 5, 3 + split: 1, 1, 1, 1 + orig: 5, 3 + offset: 0, 0 + index: -1 +default-pane-noborder + rotate: false + xy: 170, 44 + size: 1, 1 + split: 0, 0, 0, 0 + orig: 1, 1 + offset: 0, 0 + index: -1 +default-rect + rotate: false + xy: 38, 25 + size: 3, 3 + split: 1, 1, 1, 1 + orig: 3, 3 + offset: 0, 0 + index: -1 +default-rect-down + rotate: false + xy: 170, 46 + size: 3, 3 + split: 1, 1, 1, 1 + orig: 3, 3 + offset: 0, 0 + index: -1 +default-round + rotate: false + xy: 112, 29 + size: 12, 20 + split: 5, 5, 5, 4 + pad: 4, 4, 1, 1 + orig: 12, 20 + offset: 0, 0 + index: -1 +default-round-down + rotate: false + xy: 99, 29 + size: 12, 20 + split: 5, 5, 5, 4 + pad: 4, 4, 1, 1 + orig: 12, 20 + offset: 0, 0 + index: -1 +default-round-large + rotate: false + xy: 57, 29 + size: 20, 20 + split: 5, 5, 5, 4 + orig: 20, 20 + offset: 0, 0 + index: -1 +default-scroll + rotate: false + xy: 78, 29 + size: 20, 20 + split: 2, 2, 2, 2 + orig: 20, 20 + offset: 0, 0 + index: -1 +default-select + rotate: false + xy: 29, 29 + size: 27, 20 + split: 4, 14, 4, 4 + orig: 27, 20 + offset: 0, 0 + index: -1 +default-select-selection + rotate: false + xy: 26, 16 + size: 3, 3 + split: 1, 1, 1, 1 + orig: 3, 3 + offset: 0, 0 + index: -1 +default-slider + rotate: false + xy: 29, 20 + size: 8, 8 + split: 2, 2, 2, 2 + orig: 8, 8 + offset: 0, 0 + index: -1 +default-slider-knob + rotate: false + xy: 1, 1 + size: 9, 18 + orig: 9, 18 + offset: 0, 0 + index: -1 +default-splitpane + rotate: false + xy: 17, 1 + size: 5, 3 + split: 0, 5, 0, 0 + orig: 5, 3 + offset: 0, 0 + index: -1 +default-splitpane-vertical + rotate: false + xy: 125, 29 + size: 3, 5 + split: 0, 0, 0, 5 + orig: 3, 5 + offset: 0, 0 + index: -1 +default-window + rotate: false + xy: 1, 20 + size: 27, 29 + split: 4, 3, 20, 3 + orig: 27, 29 + offset: 0, 0 + index: -1 +selection + rotate: false + xy: 174, 48 + size: 1, 1 + orig: 1, 1 + offset: 0, 0 + index: -1 +tree-minus + rotate: false + xy: 140, 35 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +tree-plus + rotate: false + xy: 155, 35 + size: 14, 14 + orig: 14, 14 + offset: 0, 0 + index: -1 +white + rotate: false + xy: 129, 31 + size: 3, 3 + orig: 3, 3 + offset: 0, 0 + index: -1 \ No newline at end of file diff --git a/desktop/assets/skin/uiskin.json b/desktop/assets/skin/uiskin.json new file mode 100644 index 0000000..b325d01 --- /dev/null +++ b/desktop/assets/skin/uiskin.json @@ -0,0 +1,79 @@ +{ +com.badlogic.gdx.graphics.g2d.BitmapFont: { + default-font: { file: default.fnt }, + tiny-font: { file: tiny.fnt } +}, +com.badlogic.gdx.graphics.Color: { + green: { a: 1, b: 0, g: 1, r: 0 }, + white: { a: 1, b: 1, g: 1, r: 1 }, + red: { a: 1, b: 0, g: 0, r: 1 }, + black: { a: 1, b: 0, g: 0, r: 0 }, + blue: {a: 1, b: 0.9, g: 0.4, r: 0 } +}, +com.badlogic.gdx.scenes.scene2d.ui.Skin$TintedDrawable: { + dialogDim: { name: white, color: { r: 0, g: 0, b: 0, a: 0.45 } }, +}, +com.badlogic.gdx.scenes.scene2d.ui.Button$ButtonStyle: { + default: { down: default-round-down, up: default-round }, + toggle: { down: default-round-down, checked: default-round-down, up: default-round } +}, +com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle: { + default: { down: default-round-down, up: default-round, font: default-font, fontColor: white, overFontColor: blue}, + tinytext: { down: default-round-down, up: default-round, font: tiny-font, fontColor: white, overFontColor: blue}, + toggle: { down: default-round-down, up: default-round, checked: default-round-down, font: default-font, fontColor: white, downFontColor: red } +}, +com.badlogic.gdx.scenes.scene2d.ui.ScrollPane$ScrollPaneStyle: { + default: { vScroll: default-scroll, hScrollKnob: default-round-large, background: default-rect, hScroll: default-scroll, vScrollKnob: default-round-large } +}, +com.badlogic.gdx.scenes.scene2d.ui.SelectBox$SelectBoxStyle: { + default: { + font: default-font, fontColor: white, background: default-select, + scrollStyle: default, + listStyle: { font: default-font, selection: default-select-selection } + } +}, +com.badlogic.gdx.scenes.scene2d.ui.SplitPane$SplitPaneStyle: { + default-vertical: { handle: default-splitpane-vertical }, + default-horizontal: { handle: default-splitpane } +}, +com.badlogic.gdx.scenes.scene2d.ui.Window$WindowStyle: { + default: { titleFont: default-font, background: default-window, titleFontColor: white }, + dialog: { titleFont: default-font, background: default-window, titleFontColor: white, stageBackground: dialogDim } +}, +com.badlogic.gdx.scenes.scene2d.ui.ProgressBar$ProgressBarStyle: { + default-horizontal: { background: default-slider, knob: default-slider-knob }, + default-vertical: { background: default-slider, knob: default-round-large } +}, +com.badlogic.gdx.scenes.scene2d.ui.Slider$SliderStyle: { + default-horizontal: { background: default-slider, knob: default-slider-knob }, + default-vertical: { background: default-slider, knob: default-round-large } +}, +com.badlogic.gdx.scenes.scene2d.ui.Label$LabelStyle: { + default: { font: default-font, fontColor: white } + redlabel: { font: default-font, fontColor: red } + bluelabel: { font: default-font, fontColor: blue } + greenlabel: { font: default-font, fontColor: green } +}, +com.badlogic.gdx.scenes.scene2d.ui.TextField$TextFieldStyle: { + default: { selection: selection, background: textfield, font: default-font, fontColor: white, cursor: cursor } + tinytext: { selection: selection, background: textfield, font: tiny-font, fontColor: white, cursor: cursor } +}, +com.badlogic.gdx.scenes.scene2d.ui.CheckBox$CheckBoxStyle: { + default: { checkboxOn: check-on, checkboxOff: check-off, font: default-font, fontColor: white } +}, +com.badlogic.gdx.scenes.scene2d.ui.List$ListStyle: { + default: { fontColorUnselected: white, selection: selection, fontColorSelected: white, font: default-font } +}, +com.badlogic.gdx.scenes.scene2d.ui.Touchpad$TouchpadStyle: { + default: { background: default-pane, knob: default-round-large } +}, +com.badlogic.gdx.scenes.scene2d.ui.Tree$TreeStyle: { + default: { minus: tree-minus, plus: tree-plus, selection: default-select-selection } +}, +com.badlogic.gdx.scenes.scene2d.ui.TextTooltip$TextTooltipStyle: { + default: { + label: { font: default-font, fontColor: white }, + background: default-pane + } +}, +} \ No newline at end of file diff --git a/desktop/assets/skin/uiskin.png b/desktop/assets/skin/uiskin.png new file mode 100644 index 0000000..f6ae9ea Binary files /dev/null and b/desktop/assets/skin/uiskin.png differ diff --git a/desktop/build.gradle b/desktop/build.gradle index 9e2cea7..bb8cc0c 100644 --- a/desktop/build.gradle +++ b/desktop/build.gradle @@ -1,6 +1,6 @@ apply plugin: "java" -sourceCompatibility = 1.6 +sourceCompatibility = 1.7 sourceSets.main.java.srcDirs = [ "src/" ] project.ext.mainClassName = "com.jw.lightwallet.desktop.DesktopLauncher" @@ -43,4 +43,4 @@ task afterEclipseImport(description: "Post processing after project generation", printer.setPreserveWhitespace(true) printer.print(classpath) } -} \ No newline at end of file +} diff --git a/desktop/src/com/jw/lightwallet/desktop/DesktopLauncher.java b/desktop/src/com/jw/lightwallet/desktop/DesktopLauncher.java index b7f68c9..d5801ed 100644 --- a/desktop/src/com/jw/lightwallet/desktop/DesktopLauncher.java +++ b/desktop/src/com/jw/lightwallet/desktop/DesktopLauncher.java @@ -12,7 +12,7 @@ public class DesktopLauncher { config.width = Constants.DESKTOP_WIDTH; config.height = Constants.DESKTOP_HEIGHT; config.title = "Monero LightWallet"; - config.addIcon("icon32.png", FileType.Internal); + config.addIcon("assets/icon32.png", FileType.Internal); new LwjglApplication(new LightWallet(), config); } }