themes and more

This commit is contained in:
sirjonasxx 2021-10-02 19:27:42 +02:00
parent e94db6c85c
commit eb79ea0383
18 changed files with 1055 additions and 104 deletions

View File

@ -1,49 +1,42 @@
package gearth;
import gearth.misc.AdminValidator;
import gearth.misc.Cacher;
import gearth.misc.UpdateChecker;
import gearth.ui.GEarthController;
import javafx.application.Application;
import javafx.application.Platform;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.Region;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
import org.apache.commons.io.IOUtils;
import org.apache.maven.artifact.versioning.ComparableVersion;
import org.json.JSONObject;
import java.io.IOException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
// run as root issue Invalid MIT-MAGIC-COOKIE-1 key fix: https://stackoverflow.com/questions/48139447/invalid-mit-magic-cookie-1-key
public class Main extends Application {
public static Application main;
public static String version = "1.5";
private static String gitApi = "https://api.github.com/repos/sirjonasxx/G-Earth/releases/latest";
public static String gitApi = "https://api.github.com/repos/sirjonasxx/G-Earth/releases/latest";
public static String theme = "G-Earth";
static {
if (Cacher.getCacheContents().has("theme")) {
theme = Cacher.getCacheContents().getString("theme");
}
}
@Override
public void start(Stage primaryStage) throws Exception{
main = this;
FXMLLoader loader = new FXMLLoader(getClass().getResource("ui/G-Earth.fxml"));
FXMLLoader loader = new FXMLLoader(getClass().getResource("/gearth/ui/G-Earth.fxml"));
Parent root = loader.load();
GEarthController companion = loader.getController();
companion.setStage(primaryStage);
primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("G-EarthLogoSmaller.png")));
primaryStage.getIcons().add(new Image(getClass().getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", theme))));
primaryStage.setTitle("G-Earth " + version);
primaryStage.setTitle(theme + " " + version);
// https://stackoverflow.com/questions/20732100/javafx-why-does-stage-setresizablefalse-cause-additional-margins
// primaryStage.setScene(new Scene(root, 650, 295));
primaryStage.setScene(new Scene(root));
@ -51,7 +44,7 @@ public class Main extends Application {
primaryStage.sizeToScene();
primaryStage.show();
primaryStage.getScene().getStylesheets().add(getClass().getResource("ui/bootstrap3.css").toExternalForm());
primaryStage.getScene().getStylesheets().add(getClass().getResource(String.format("/gearth/themes/%s/styling.css", theme)).toExternalForm());
primaryStage.setOnCloseRequest( event -> {
companion.exit();
@ -61,61 +54,8 @@ public class Main extends Application {
System.exit(0);
});
new Thread(() -> {
if (!AdminValidator.isAdmin()) {
Platform.runLater(() -> {
Alert alert = new Alert(Alert.AlertType.WARNING, "G-Earth needs admin privileges in order to work on Flash, please restart G-Earth with admin permissions unless you're using Unity", ButtonType.OK);
alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
alert.setResizable(false);
alert.show();
});
}
}).start();
new Thread(() -> {
try {
JSONObject object = new JSONObject(IOUtils.toString(
new URL(gitApi).openStream(), StandardCharsets.UTF_8));
String gitv = (String)object.get("tag_name");
if (new ComparableVersion(version).compareTo(new ComparableVersion(gitv)) < 0) {
Platform.runLater(() -> {
String body = (String)object.get("body");
boolean isForcedUpdate = body.contains("(!)");
Alert alert = new Alert(isForcedUpdate ? Alert.AlertType.ERROR : Alert.AlertType.INFORMATION, "G-Earth is outdated!", ButtonType.OK);
FlowPane fp = new FlowPane();
Label lbl = new Label("A new version of G-Earth has been found ("+gitv+")" + System.lineSeparator()+ System.lineSeparator() + "Update to the latest version:");
Hyperlink link = new Hyperlink("https://github.com/sirjonasxx/G-Earth/releases");
fp.getChildren().addAll( lbl, link);
link.setOnAction(event -> {
Main.main.getHostServices().showDocument(link.getText());
event.consume();
});
WebView webView = new WebView();
webView.getEngine().loadContent("<html>A new version of G-Earth has been found ("+gitv+")<br><br>Update to the latest version:<br><a href=\"https://github.com/sirjonasxx/G-Earth/releases\">https://github.com/sirjonasxx/G-Earth/releases</a></html>");
webView.setPrefSize(500, 200);
alert.setResizable(false);
alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
alert.getDialogPane().setContent(fp);
if (isForcedUpdate) {
alert.setOnCloseRequest(event -> System.exit(0));
}
alert.show();
});
}
} catch (IOException e) {
// e.printStackTrace();
}
}).start();
AdminValidator.validate();
UpdateChecker.checkForUpdates();
}
@ -146,15 +86,3 @@ public class Main extends Application {
return null;
}
}
// Hi
// I'm
// Lande
// I want
// The role
// Developer
// Pls
// You say :
// Change 10 lines
// I dit it.
// https://i.imgur.com/QEHV2NZ.png

View File

@ -1,5 +1,10 @@
package gearth.misc;
import javafx.application.Platform;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.layout.Region;
import java.io.PrintStream;
import java.util.prefs.Preferences;
@ -34,4 +39,18 @@ public class AdminValidator {
return isAdmin;
}
public static void validate() {
new Thread(() -> {
if (!AdminValidator.isAdmin()) {
Platform.runLater(() -> {
Alert alert = new Alert(Alert.AlertType.WARNING, "G-Earth needs admin privileges in order to work on Flash, please restart G-Earth with admin permissions unless you're using Unity", ButtonType.OK);
alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
alert.setResizable(false);
alert.show();
});
}
}).start();
}
}

View File

@ -0,0 +1,71 @@
package gearth.misc;
import gearth.Main;
import javafx.application.Platform;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Label;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.Region;
import javafx.scene.web.WebView;
import org.apache.commons.io.IOUtils;
import org.apache.maven.artifact.versioning.ComparableVersion;
import org.json.JSONObject;
import java.io.IOException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import static gearth.Main.gitApi;
import static gearth.Main.version;
public class UpdateChecker {
public static void checkForUpdates() {
new Thread(() -> {
try {
JSONObject object = new JSONObject(IOUtils.toString(
new URL(gitApi).openStream(), StandardCharsets.UTF_8));
String gitv = (String)object.get("tag_name");
if (new ComparableVersion(version).compareTo(new ComparableVersion(gitv)) < 0) {
Platform.runLater(() -> {
String body = (String)object.get("body");
boolean isForcedUpdate = body.contains("(!)");
Alert alert = new Alert(isForcedUpdate ? Alert.AlertType.ERROR : Alert.AlertType.INFORMATION, "G-Earth is outdated!", ButtonType.OK);
FlowPane fp = new FlowPane();
Label lbl = new Label("A new version of G-Earth has been found ("+gitv+")" + System.lineSeparator()+ System.lineSeparator() + "Update to the latest version:");
Hyperlink link = new Hyperlink("https://github.com/sirjonasxx/G-Earth/releases");
fp.getChildren().addAll( lbl, link);
link.setOnAction(event -> {
Main.main.getHostServices().showDocument(link.getText());
event.consume();
});
WebView webView = new WebView();
webView.getEngine().loadContent("<html>A new version of G-Earth has been found ("+gitv+")<br><br>Update to the latest version:<br><a href=\"https://github.com/sirjonasxx/G-Earth/releases\">https://github.com/sirjonasxx/G-Earth/releases</a></html>");
webView.setPrefSize(500, 200);
alert.setResizable(false);
alert.getDialogPane().setMinHeight(Region.USE_PREF_SIZE);
alert.getDialogPane().setContent(fp);
if (isForcedUpdate) {
alert.setOnCloseRequest(event -> System.exit(0));
}
alert.show();
});
}
} catch (IOException e) {
// e.printStackTrace();
}
}).start();
}
}

View File

@ -26,8 +26,8 @@ public class GExtensionStoreLauncher extends InternalExtensionFormLauncher<GExte
stage.setHeight(530);
stage.setScene(new Scene(root));
stage.getScene().getStylesheets().add(GEarthController.class.getResource("/gearth/ui/bootstrap3.css").toExternalForm());
stage.getIcons().add(new Image(Main.class.getResourceAsStream("G-EarthLogoSmaller.png")));
stage.getScene().getStylesheets().add(GEarthController.class.getResource(String.format("/gearth/themes/%s/styling.css", Main.theme)).toExternalForm());
stage.getIcons().add(new Image(Main.class.getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", Main.theme))));
GExtensionStore gExtensionStore = new GExtensionStore();

View File

@ -1,5 +1,6 @@
package gearth.services.internal_extensions.uilogger;
import gearth.Main;
import gearth.extensions.InternalExtensionFormLauncher;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
@ -16,12 +17,12 @@ public class UiLoggerLauncher extends InternalExtensionFormLauncher<UiLogger> {
FXMLLoader loader = new FXMLLoader(UiLogger.class.getResource("UiLogger.fxml"));
Parent root = loader.load();
stage.setTitle("G-Earth | Packet Logger");
stage.setTitle(String.format("%s | Packet Logger", Main.theme));
stage.initModality(Modality.NONE);
stage.getIcons().add(new Image(getClass().getResourceAsStream("/gearth/G-EarthLogoSmaller.png")));
stage.getIcons().add(new Image(getClass().getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", Main.theme))));
Scene scene = new Scene(root);
scene.getStylesheets().add("/gearth/ui/bootstrap3.css");
scene.getStylesheets().add(String.format("/gearth/themes/%s/styling.css", Main.theme));
scene.getStylesheets().add("/gearth/services/internal_extensions/uilogger/logger.css");
UiLoggerController controller = loader.getController();

View File

@ -8,7 +8,6 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Random;
@ -133,7 +132,7 @@ public class GUnityFileServer extends HttpServlet
private void getLogo(HttpServletResponse response) throws IOException {
OutputStream out = response.getOutputStream();
InputStream in = Main.class.getResourceAsStream("G-EarthLogo.png");
InputStream in = Main.class.getResourceAsStream(String.format("/gearth/themes/%s/logo.png", Main.theme));
byte[] bytes = new byte[4096];
int bytesRead;

View File

@ -144,7 +144,8 @@ public class ExtensionItemContainer extends GridPane {
parent.getChildren().add(this);
if (item.extensionType() == ExtensionType.INTERNAL) {
setBackground(new Background(new BackgroundFill(Paint.valueOf("F0FFFF"), CornerRadii.EMPTY, Insets.EMPTY)));
getStyleClass().clear();
getStyleClass().add("internalExtension");
}
@ -176,7 +177,8 @@ public class ExtensionItemContainer extends GridPane {
ExtensionItemContainer this2 = this;
item.getDeletedObservable().addListener(() -> Platform.runLater(() -> {
if (item.isInstalledExtension()) {
setBackground(new Background(new BackgroundFill(Paint.valueOf("#cccccc"),null, null)));
getStyleClass().clear();
getStyleClass().add("disconnectedExtension");
getChildren().remove(buttonsBox);
add(additionalButtonBox, 4, 0);
reloadButton.setVisible(true);
@ -191,7 +193,8 @@ public class ExtensionItemContainer extends GridPane {
item = extension;
initExtension();
setBackground(new Background(new BackgroundFill(Paint.valueOf("#ffffff"),null, null)));
getStyleClass().clear();
getStyleClass().add("connectedExtension");
getChildren().remove(additionalButtonBox);
if (buttonsBox != null) {
add(buttonsBox, 4, 0);

View File

@ -1,5 +1,6 @@
package gearth.ui.extensions.logger;
import gearth.Main;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
@ -34,15 +35,15 @@ public class ExtensionLogger {
stage = new Stage();
stage.setTitle("G-Earth | Extension Console");
stage.setTitle(String.format("%s | Extension Console", Main.theme));
stage.initModality(Modality.NONE);
stage.getIcons().add(new Image(getClass().getResourceAsStream("/gearth/G-EarthLogoSmaller.png")));
stage.getIcons().add(new Image(getClass().getResourceAsStream(String.format("/gearth/themes/%s/logoSmall.png", Main.theme))));
stage.setAlwaysOnTop(true);
stage.setMinHeight(235);
stage.setMinWidth(370);
Scene scene = new Scene(root);
scene.getStylesheets().add("/gearth/ui/bootstrap3.css");
scene.getStylesheets().add(String.format("/gearth/themes/%s/styling.css", Main.theme));
scene.getStylesheets().add("/gearth/ui/extensions/logger/logger.css");
ExtensionLoggerController controller = loader.getController();
controller.setStage(stage);

View File

@ -6,7 +6,6 @@ import javafx.scene.control.*;
import gearth.ui.SubForm;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.Region;
import javafx.scene.web.WebView;
@ -34,9 +33,10 @@ public class InfoController extends SubForm {
}
public void initialize() {
version.setText(version.getText().replace("$theme", Main.theme));
version.setText(version.getText().replace("$version", Main.version));
img_logo.setImage(new Image("/gearth/G-EarthLogo.png"));
img_logo.setImage(new Image(String.format("/gearth/themes/%s/logo.png", Main.theme)));
link_ase.setTooltip(new Tooltip("https://allseeingeye.to"));
link_darkbox.setTooltip(new Tooltip("https://darkbox.nl"));

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 569 KiB

After

Width:  |  Height:  |  Size: 569 KiB

View File

Before

Width:  |  Height:  |  Size: 8.8 KiB

After

Width:  |  Height:  |  Size: 8.8 KiB

View File

@ -890,4 +890,23 @@ VBox > .split-menu-button.last > .arrow-button {
.check-box:pressed > .box,
.radio-button:pressed > .radio {
-fx-background-color: #50c0e2;
}
/*g-earth stuff*/
.hyperlink {
-fx-text-fill: #0096c8;
}
.internalExtension {
-fx-background-color: #F0FFFF;
}
.disconnectedExtension {
-fx-background-color: #CCCCCC;
}
.connectedExtension {
-fx-background-color: #FFFFFF;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

View File

@ -0,0 +1,910 @@
.root {
-fx-body-color : #F5F5F5;
-fx-outer-border : #cecece;
}
.button,.menu-button,.toggle-button,.split-menu-button {
-fx-font-size: 14;
-fx-background-radius: 4;
-fx-border-radius: 4;
-fx-pref-height: 30;
-fx-min-width: 30;
}
.button,.menu-button,.split-menu-button,.toggle-button,.number-button {
-fx-background-insets: 0, 0, -1, 0;
}
.split-menu-button > .label {
-fx-border-radius: 4 0 0 4;
-fx-background-radius: 3 0 0 3;
}
.split-menu-button > .arrow-button {
-fx-border-radius: 0 4 4 0;
-fx-background-radius: 0 3 3 0;
}
.lg {
-fx-min-height: 46;
-fx-max-height: 46;
-fx-font-size: 18;
}
.sm {
-fx-min-height: 30;
-fx-max-height: 30;
}
.xs {
-fx-min-height: 22;
-fx-max-height: 22;
-fx-font-size: 10;
}
.primary .arrow,
.success .arrow,
.info .arrow,
.warning .arrow,
.danger .arrow {
-fx-background-color: transparent, white;
}
.primary > .label,
.success > .label,
.info > .label,
.warning > .label,
.danger > .label {
-fx-text-fill: white;
}
.action-btn {
-fx-min-width: 80;
}
/*positions*/
/*first*/
.button.first, .menu-button.first, .toggle-button.first, .text-field.first, .text-area.first {
-fx-border-radius: 4 0 0 4;
-fx-background-radius: 4 0 0 4;
}
.split-menu-button.first > .arrow-button, .split-menu-button.middle > .arrow-button {
-fx-border-radius: 0;
-fx-background-radius: 0;
}
VBox > .button.first,
VBox > .menu-button.first,
VBox > .toggle-button.first,
VBox > .split-menu-button.first,
VBox > .text-field.first,
VBox > .text-area.first {
-fx-border-radius: 4 4 0 0;
-fx-background-radius: 4 4 0 0;
}
VBox > .split-menu-button.first > .label {
-fx-border-radius: 4 0 0 0;
-fx-background-radius: 3 0 0 0;
}
VBox > .split-menu-button.first > .arrow-button {
-fx-border-radius: 0 4 0 0;
-fx-background-radius: 0 3 0 0;
}
/*middle*/
.middle {
-fx-border-radius: 0;
-fx-background-radius: 0;
}
/*last*/
.split-menu-button.middle > .label, .split-menu-button.last > .label {
-fx-border-radius: 0;
-fx-background-radius: 0;
}
.split-menu-button.last {
-fx-border-radius: 0 4 4 0;
-fx-background-radius: 0 4 4 0;
}
.button.middle, .text-field.middle, .text-area.middle, .split-menu-button.middle, .toggle-button.middle {
-fx-border-radius: 0;
-fx-background-radius: 0;
}
.button.last, .text-field.last, .text-area.last, .split-menu-button.last, .toggle-button.last, .menu-button.last {
-fx-border-radius: 0 4 4 0;
-fx-background-radius: 0 4 4 0;
}
VBox > .button.last,
VBox > .menu-button.last,
VBox > .toggle-button.last,
VBox > .split-menu-button.last,
VBox > .text-field.last,
VBox > .text-area.last {
-fx-border-radius: 0 0 4 4;
-fx-background-radius: 0 0 4 4;
}
VBox > .split-menu-button.last > .label {
-fx-border-radius: 0 0 0 4;
-fx-background-radius: 0 0 0 3;
}
VBox > .split-menu-button.last > .arrow-button {
-fx-border-radius: 0 0 4 0;
-fx-background-radius: 0 0 3 0;
}
/*button styles*/
/*default button settings*/
/*bgcolor setting*/
.color-picker,.date-picker > .arrow-button,
.number-button,.left-arrow-button,.right-arrow-button,
.button,.split-menu-button,.toggle-button,.menu-button,
.font-menu-button, .split-menu-button > .label, .split-menu-button > .arrow-button {
-fx-background-color: white;
}
.color-picker,.date-picker > .arrow-button,
.button,.menu-button,.toggle-button,.number-button,.left-arrow-button,.right-arrow-button,
.font-menu-button,
.split-menu-button > .label,.split-menu-button > .arrow-button {
-fx-border-color: #cccccc;
-fx-text-fill: #000000;
}
/*just for the special split menu button*/
.split-menu-button > .label {
-fx-border-width: 1 0 1 1;
}
/*for date picker arrow button*/
.date-picker > .arrow-button {
-fx-border-radius: 0 4 4 0;
}
.combo-box > .arrow-button, .choice-box > .arrow-button {
-fx-border-width: 0;
}
/*hover state*/
.color-picker:hover,
.date-picker:hover > .arrow-button,
.combo-box:hover,.choice-box:hover,
.number-button:hover,.left-arrow-button:hover,.right-arrow-button:hover,
.button:hover,.menu-button:hover,.toggle-button:hover,
.font-menu-button:hover,
.split-menu-button > .label:hover, .split-menu-button > .arrow-button:hover {
-fx-background-color: #e6e6e6;
-fx-border-color: #acacac;
}
/*pressed selected*/
.color-picker:pressed,.color-picker:selected,
.number-button:pressed,.number-button:selected,
.date-picker:pressed > .arrow-button,
.combo-box:pressed > .arrow-button,.combo-box:selected > .arrow-button,
.choice-box:pressed > .arrow-button,.choice-box:selected > .arrow-button,
.font-menu-button:pressed,.font-menu-button:selected,
.left-arrow-button:pressed,.left-arrow-button:selected,
.right-arrow-button:pressed,.right-arrow-button:selected,
.button:pressed, .button:selected,.menu-button:pressed,.menu-button:selected
,.toggle-button:pressed,.toggle-button:selected,
.split-menu-button:pressed > .label, .split-menu-button > .arrow-button:pressed {
-fx-background-color: #e6e6e6;
-fx-border-color: #acacac;
-fx-effect: innershadow(gaussian, #adadad, 10, 0, 0, 3);
}
/*primary*/
.button.primary,.split-menu-button.primary,.toggle-button.primary,.menu-button.primary,
.split-menu-button.primary > .label, .split-menu-button.primary > .arrow-button {
-fx-background-color: #b77714;
}
.button.primary,.menu-button.primary,.toggle-button.primary,
.split-menu-button.primary > .label,.split-menu-button.primary > .arrow-button {
-fx-border-color: #a46a37;
-fx-text-fill: white;
}
/*hover state*/
.button.primary:hover,.menu-button.primary:hover,.toggle-button.primary:hover,
.split-menu-button.primary > .label:hover, .split-menu-button.primary > .arrow-button:hover {
-fx-border-color: #744d15;
-fx-background-color: #905710;
}
/*pressed selected*/
.button.primary:pressed, .button.primary:selected,
.menu-button.primary:pressed,.menu-button.primary:selected
,.toggle-button.primary:pressed,.toggle-button.primary:selected,
.split-menu-button.primary:pressed > .label, .split-menu-button.primary > .arrow-button:pressed {
-fx-background-color: #905710;
-fx-border-color: #744d15;
-fx-effect: innershadow(gaussian, #744d15, 10, 0, 0, 3);
}
/*success*/
.button.success,.split-menu-button.success,.toggle-button.success,.menu-button.success,
.split-menu-button.success > .label, .split-menu-button.success > .arrow-button {
-fx-background-color: #5cb85c;
}
.button.success,.menu-button.success,.toggle-button.success,
.split-menu-button.success > .label,.split-menu-button.success > .arrow-button {
-fx-border-color: #4cae4c;
-fx-text-fill: white;
}
/*hover state*/
.button.success:hover,.menu-button.success:hover,.toggle-button.success:hover,
.split-menu-button.success > .label:hover, .split-menu-button.success > .arrow-button:hover {
-fx-border-color: #398439;
-fx-background-color: #449d44;
}
/*pressed selected*/
.button.success:pressed, .button.success:selected,
.menu-button.success:pressed,.menu-button.success:selected
,.toggle-button.success:pressed,.toggle-button.success:selected,
.split-menu-button.success:pressed > .label, .split-menu-button.success > .arrow-button:pressed {
-fx-background-color: #449d44;
-fx-border-color: #398439;
-fx-effect: innershadow(gaussian, #398439, 10, 0, 0, 3);
}
/*info*/
.button.info,.split-menu-button.info,.toggle-button.info,.menu-button.info,
.split-menu-button.info > .label, .split-menu-button.info > .arrow-button {
-fx-background-color: #e2ab40;
}
.button.info,.menu-button.info,.toggle-button.info,
.split-menu-button.info > .label,.split-menu-button.info > .arrow-button {
-fx-border-color: #e29b23;
-fx-text-fill: white;
}
/*hover state*/
.button.info:hover,.menu-button.info:hover,.toggle-button.info:hover,
.split-menu-button.info > .label:hover, .split-menu-button.info > .arrow-button:hover {
-fx-border-color: #bc862a;
-fx-background-color: #d59735;
}
/*pressed selected*/
.button.info:pressed, .button.info:selected,
.menu-button.info:pressed,.menu-button.info:selected
,.toggle-button.info:pressed,.toggle-button.info:selected,
.split-menu-button.info:pressed > .label, .split-menu-button.info > .arrow-button:pressed {
-fx-background-color: #31b0d5;
-fx-border-color: #269abc;
-fx-effect: innershadow(gaussian, #269abc, 10, 0, 0, 3);
}
/*warning*/
.button.warning,.split-menu-button.warning,.toggle-button.warning,.menu-button.warning,
.split-menu-button.warning > .label, .split-menu-button.warning > .arrow-button {
-fx-background-color: #f0ad4e;
}
.button.warning,.menu-button.warning,.toggle-button.warning,
.split-menu-button.warning > .label,.split-menu-button.warning > .arrow-button {
-fx-border-color: #eea236;
-fx-text-fill: white;
}
/*hover state*/
.button.warning:hover,.menu-button.warning:hover,.toggle-button.warning:hover,
.split-menu-button.warning > .label:hover, .split-menu-button.warning > .arrow-button:hover {
-fx-border-color: #d58512;
-fx-background-color: #ec971f;
}
/*pressed selected*/
.button.warning:pressed, .button.warning:selected,
.menu-button.warning:pressed,.menu-button.warning:selected
,.toggle-button.warning:pressed,.toggle-button.warning:selected,
.split-menu-button.warning:pressed > .label, .split-menu-button.warning > .arrow-button:pressed {
-fx-background-color: #ec971f;
-fx-border-color: #d58512;
-fx-effect: innershadow(gaussian, #d58512, 10, 0, 0, 3);
}
/*danger*/
.button.danger,.split-menu-button.danger,.toggle-button.danger,.menu-button.danger,
.split-menu-button.danger > .label, .split-menu-button.danger > .arrow-button {
-fx-background-color: #d9534f;
}
.button.danger,.menu-button.danger,.toggle-button.danger,
.split-menu-button.danger > .label,.split-menu-button.danger > .arrow-button {
-fx-border-color: #d43f3a;
-fx-text-fill: white;
}
/*hover state*/
.button.danger:hover,.menu-button.danger:hover,.toggle-button.danger:hover,
.split-menu-button.danger > .label:hover, .split-menu-button.danger > .arrow-button:hover {
-fx-border-color: #ac2925;
-fx-background-color: #c9302c;
}
/*pressed selected*/
.button.danger:pressed, .button.danger:selected,
.menu-button.danger:pressed,.menu-button.danger:selected
,.toggle-button.danger:pressed,.toggle-button.danger:selected,
.split-menu-button.danger:pressed > .label, .split-menu-button.danger > .arrow-button:pressed {
-fx-border-color: #ac2925;
-fx-background-color: #c9302c;
-fx-effect: innershadow(gaussian, #ac2925, 10, 0, 0, 3);
}
.menu-item {
-fx-min-width: 200;
}
.menu-item:focused {
-fx-background-color: #f5f5f5;
}
.menu-item:focused > * {
-fx-text-fill: #000000;
}
.menu-item:focused .arrow {
-fx-background-color: #333333;
}
.check-menu-item:checked:hover > .left-container > .check,
.check-menu-item:checked:focused > .left-container > .check,
.radio-menu-item:checked:hover > .left-container > .radio,
.radio-menu-item:checked:focused > .left-container > .radio {
-fx-background-color: #333333;
}
.context-menu {
-fx-border-radius: 4;
-fx-background-radius: 4;
-fx-border-color: #bebec0;
}
.context-menu > * {
-fx-padding: 5 0 5 0;
}
.separator {
-fx-padding: 5 0 5 0;
}
.text-field {
-fx-pref-height: 30;
}
.combo-box, .choice-box {
-fx-background-insets: 0;
-fx-border-color: #cecece;
-fx-padding: -1;
-fx-border-width: 1;
}
.combo-box, .choice-box, .color-picker, .date-picker {
-fx-border-radius: 4;
-fx-background-radius: 4;
-fx-pref-height: 30;
}
.combo-box:editable > .arrow-button {
-fx-background-color: white;
}
.combo-box:editable > .arrow-button:hover {
-fx-background-color: #e6e6e6;
}
.combo-box:editable > .arrow-button:pressed {
-fx-effect: innershadow(gaussian, #adadad, 10, 0, 0, 3);
}
.combo-box > .text-input, .date-picker > .text-input {
-fx-background-radius: 4 0 0 4;
-fx-border-width: 0;
}
.text-field, .text-area {
-fx-border-color: #cccccc;
-fx-background-color: white;
-fx-border-radius: 4;
-fx-background-radius: 4;
-fx-effect: innershadow(gaussian, transparent, 0, 0, 0, 0);
}
.text-field:focused, .text-area:focused {
-fx-border-color: #e9b365;
-fx-effect: dropshadow(gaussian, #e9b365, 10, 0, 0, 0);
}
.text-area .scroll-pane, .text-area .scroll-pane .content {
-fx-background-color: white;
-fx-background-radius: 4;
}
.tab-pane .tab-header-background {
-fx-background-color: #f4f4f4;
}
.tab-pane.plain .tab-header-background {
-fx-background-color: transparent;
}
.tab-pane .tab-header-area .tab {
-fx-border-radius: 4 4 0 0;
-fx-background-radius: 5 5 0 0;
-fx-background-color: transparent;
-fx-border-color: transparent;
-fx-padding: 3 10 5 10;
-fx-background-insets: 0;
}
.tab-pane .tab-header-area .tab .tab-label {
-fx-text-fill: #b77714;
}
.tab-pane .tab-header-area .tab:hover {
-fx-background-color: #eeeeee;
}
.tab-pane .tab-header-area .tab:selected {
-fx-focus-color: transparent;
-fx-border-color: #dddddd #dddddd white #dddddd;
-fx-background-color: white;
}
.tab-pane .tab-header-area .tab:selected .tab-label {
-fx-text-fill: #333333;
}
.tab-pane > .tab-content-area {
-fx-background-color: white;
}
.tab-pane .tab-header-area .tab .tab-label {
-fx-focus-color: transparent;
}
.tab-pane:focused > .tab-header-area > .headers-region > .tab:selected .focus-indicator {
-fx-border-color: transparent;
}
.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > .tab-close-button {
-fx-background-color: #b77714;
}
.tab-pane > .tab-header-area > .headers-region > .tab:selected > .tab-container > .tab-close-button {
-fx-background-color: #333333;
}
.tab-pane > .tab-header-area > .headers-region > .tab > .tab-container > .tab-close-button:hover {
-fx-background-color: red;
-fx-cursor: hand;
}
.scroll-bar {
-fx-background-color: transparent;
-fx-background-radius: 0;
-fx-block-increment: 50;
}
.corner {
-fx-background-color: transparent;
}
.scroll-bar .decrement-button, .scroll-bar .decrement-arrow {
visibility: hidden;
-fx-pref-height: 1;
-fx-pref-width: 1;
}
.scroll-bar .increment-button, .scroll-bar .increment-arrow {
visibility: hidden;
-fx-pref-height: 1;
-fx-pref-width: 1;
}
.scroll-bar:vertical {
-fx-pref-width: 10;
}
.scroll-bar:horizontal {
-fx-pref-height: 10;
}
.scroll-bar:horizontal .track,
.scroll-bar:vertical .track {
-fx-background-color: transparent;
-fx-border-color: transparent;
-fx-background-radius: 5;
}
.scroll-bar:vertical .track-background,
.scroll-bar:horizontal .track-background {
-fx-background-color: transparent;
-fx-background-insets: 0;
-fx-background-radius: 5;
}
.scroll-bar:horizontal .thumb {
-fx-background-color: #c9c9c9;
-fx-background-insets: 2 0 2 0;
-fx-background-radius: 5;
}
.scroll-bar:vertical .thumb {
-fx-background-color: #c9c9c9;
-fx-background-insets: 0 2 0 2;
-fx-background-radius: 5;
}
.scroll-bar:horizontal .thumb:hover,
.scroll-bar:vertical .thumb:hover {
-fx-background-color: #b5b5b5;
}
.scroll-bar:horizontal .thumb:pressed,
.scroll-bar:vertical .thumb:pressed {
-fx-background-color: #a0a0a0;
}
.scroll-bar:vertical .increment-button, .scroll-bar:vertical .decrement-button {
-fx-background-color: transparent;
-fx-background-radius: 5;
-fx-padding: 5;
}
.scroll-bar:horizontal .increment-button, .scroll-bar:horizontal .decrement-button {
-fx-background-color: transparent;
-fx-background-radius: 5;
-fx-padding: 5;
}
.scroll-bar:vertical:focused,
.scroll-bar:horizontal:focused {
-fx-background-color: transparent, rgb(96, 96, 96), rgb(96, 96, 96);
}
.menu-bar {
-fx-background-color: white;
}
.menu-bar > .container > .menu-button {
-fx-background-radius: 0;
-fx-background-insets: 0;
-fx-border-width: 0;
-fx-border-radius: 0;
}
.menu-bar > .container > .menu-button:hover,
.menu-bar > .container > .menu-button:showing {
-fx-background-color: #e2b14a;
}
.color-palette {
-fx-background-color: white;
}
.pagination > .pagination-control > .control-box {
-fx-spacing: -1;
}
.pagination > .pagination-control > .control-box > .left-arrow-button {
-fx-border-radius: 3 0 0 3;
-fx-border-insets: 0 0 0 7;
-fx-background-insets: 0 0 0 7, 0 0 0 5, 1 1 1 6, 2 2 2 7;
}
.pagination > .pagination-control > .control-box > .right-arrow-button {
-fx-border-radius: 0 3 3 0;
-fx-border-insets: 0 7 0 0;
-fx-background-insets: 0 7 -1 0, 0 5 0 0, 1 6 1 1, 2 7 2 2;
}
.pagination > .pagination-control > .control-box > .number-button {
-fx-background-radius: 0;
-fx-border-radius: 0;
}
.progress-bar > .track {
-fx-pref-height: 10;
-fx-background-radius: 3;
-fx-effect: innershadow(gaussian, #e4e4e4, 4, 0, 0, 1);
-fx-background-color: #f5f5f5;
}
.progress-bar > .bar {
-fx-background-insets: 0;
-fx-background-color: #b77714;
}
.progress-bar.success > .bar {
-fx-background-insets: 0;
-fx-background-color: #5cb85c;
}
.progress-bar.info > .bar {
-fx-background-insets: 0;
-fx-background-color: #5bc0de;
}
.progress-bar.warning > .bar {
-fx-background-insets: 0;
-fx-background-color: #f0ad4e
}
.progress-bar.danger > .bar {
-fx-background-insets: 0;
-fx-background-color: #d9534f;
}
.tooltip {
-fx-background: white;
-fx-text-fill: #333333;
-fx-background-color: white;
-fx-background-radius: 4px;
-fx-border-radius: 4px;
-fx-border-color: #C0C0C0;
-fx-background-insets: 0;
-fx-padding: 0.667em 0.75em 0.667em 0.75em; /* 10px */
-fx-effect: dropshadow(three-pass-box, rgba(0, 0, 0, 0.5), 10, 0.0, 0, 3);
-fx-font-size: 0.85em;
}
.tooltip.success {
-fx-background: #dff0d8;
-fx-background-color: #dff0d8;
-fx-text-fill: #99bb96;
-fx-border-color: #d6e9c6;
}
.tooltip.info {
-fx-background: #f6e4c1;
-fx-background-color: #f6e4c1;
-fx-text-fill: #8f5c16;
-fx-border-color: #f7c195;
}
.tooltip.warning {
-fx-background: #fcf8e3;
-fx-background-color: #fcf8e3;
-fx-text-fill: #8a6e3c;
-fx-border-color: #faebcc;
}
.tooltip.danger {
-fx-background: #f2dede;
-fx-background-color: #f2dede;
-fx-text-fill: #a94442;
-fx-border-color: #ebccd1;
}
.titled-pane > .title {
-fx-background-color: #f5f5f5;
-fx-border-color: #dddddd;
/*-fx-background-insets: 5, 1, 5;*/
-fx-background-radius: 3 3 0 0, 2 2 0 0, 1 1 0 0;
-fx-border-radius: 3 3 0 0, 2 2 0 0, 1 1 0 0;
-fx-padding: 11
}
.titled-pane > .content {
-fx-background-color: white;
-fx-background-radius: 0 0 4 4;
-fx-border-radius: 0 0 4 4;
-fx-border-color: #dddddd;
/*-fx-padding: -11;*/
}
.titled-pane.primary {
-fx-text-fill: white;
}
.titled-pane.primary > .title {
-fx-background-color: #b77714;
-fx-border-color: #b77714;
}
.titled-pane.primary > .content {
-fx-border-color: #b77714;
}
.titled-pane.success .arrow,
.titled-pane.info .arrow,
.titled-pane.warning .arrow,
.titled-pane.danger .arrow {
-fx-background-color: -fx-mark-highlight-color, -fx-mark-color;
}
.titled-pane.success {
-fx-text-fill: #3c763d;
}
.titled-pane.success > .title {
-fx-background-color: #dff0d8;
-fx-border-color: #d6e9c6;
}
.titled-pane.success > .content {
-fx-border-color: #d6e9c6;
}
.titled-pane.info {
-fx-text-fill: #8f5c16;
}
.titled-pane.info > .title {
-fx-background-color: #f7d9c2;
-fx-border-color: #f7c195;
}
.titled-pane.info > .content {
-fx-border-color: #f7c195;
}
.titled-pane.warning {
-fx-text-fill: #8a6d3b;
}
.titled-pane.warning > .title {
-fx-background-color: #fcf8e3;
-fx-border-color: #faebcc;
}
.titled-pane.warning > .content {
-fx-border-color: #faebcc;
}
.titled-pane.danger {
-fx-text-fill: #a94442;
}
.titled-pane.danger > .title {
-fx-background-color: #f2dede;
-fx-border-color: #eacbd0;
}
.titled-pane.danger > .content {
-fx-border-color: #eacbd0;
}
.accordion > .titled-pane > .title,
.accordion > .titled-pane > .content {
-fx-background-radius: 0;
-fx-border-radius: 0;
}
.tool-bar:vertical { /* left */
-fx-border-color: transparent #dddddd transparent transparent;
}
.tool-bar { /* top */
-fx-background-color: white;
-fx-border-color: transparent transparent #dddddd transparent;
}
.tool-bar:vertical {
-fx-background-insets: 0, 0 1 0 0;
}
/*table view columns*/
.filler,.column-header,.show-hide-columns-button {
-fx-background-color: #dddddd, white, white;
}
.show-hide-columns-button {
-fx-border-width: 0;
-fx-background-insets: 0 0 1 1;
}
.column-header:hover,.show-hide-columns-button:hover {
-fx-background-color: #dddddd, white, #f8f8f8;
}
.column-header-background > .filler {
-fx-border-color: transparent #dddddd transparent transparent;
-fx-border-insets: 0 1 0 0;
}
.column-drag-header {
-fx-background-color: #2fb254;
}
/*split pane*/
.split-pane > .split-pane-divider {
-fx-background-color: white;
-fx-border-color: #eeeeee;
-fx-pref-width: 8;
}
.split-pane:horizontal > .split-pane-divider {
-fx-background-insets: 0, 0 1 0 1;
-fx-border-width: 0 1 0 1;
}
/* vertical the two nodes are placed on top of each other. */
.split-pane:vertical > .split-pane-divider {
-fx-background-insets: 0, 1 0 1 0;
-fx-border-width: 1 0 1 0;
}
.split-pane > .split-pane-divider:hover {
-fx-background-color: #E0E0E0;
}
/*******************************************************************************
* *
* CheckBox *
* *
******************************************************************************/
.check-box > .box {
-fx-background-radius: 3;
/*-fx-padding: 0.166667em 0.166667em 0.25em 0.25em; !* 2 2 3 3 *!*/
-fx-padding:0;
-fx-border-color: #e2b14a;
-fx-border-radius: 3;
-fx-background-color: white;
}
.check-box > .box > .mark {
-fx-background-color: null;
-fx-padding: 0.416667em 0.416667em 0.5em 0.5em; /* 5 5 6 6 */
-fx-shape: "M927.936 272.992l-68.288-68.288c-12.608-12.576-32.96-12.576-45.536 0l-409.44 409.44-194.752-196.16c-12.576-12.576-32.928-12.576-45.536 0l-68.288 68.288c-12.576 12.608-12.576 32.96 0 45.536l285.568 287.488c12.576 12.576 32.96 12.576 45.536 0l500.736-500.768c12.576-12.544 12.576-32.96 0-45.536z";
-fx-background-insets: -3 -3 1 0;
}
.check-box {
-fx-label-padding: 0.2em 0.0em 0.3em 0.416667em; /* 0 0 0 5 */
-fx-text-fill: -fx-text-background-color;
-fx-padding: 0 0 2 0;
}
.check-box:indeterminate > .box {
-fx-padding: 0;
}
.check-box:selected > .box > .mark {
-fx-background-color: linear-gradient(to bottom, #e2b14a, #e29a16);
}
/*******************************************************************************
* *
* RadioButton *
* *
******************************************************************************/
.radio-button {
-fx-label-padding: 0.0em 0.0em 0.1em 0.416667em; /* 0 0 0 5 */
-fx-text-fill: -fx-text-background-color;
-fx-padding: 0 0 .5 0;
}
.radio-button > .radio,
.radio-button:focused > .radio {
-fx-border-color: #e2b14a;
-fx-border-radius: 1em;
-fx-background-radius: 1.0em; /* large value to make sure this remains circular */
-fx-padding: 1 2 3 2;
-fx-background-color: white;
}
.radio-button > .radio > .dot {
-fx-background-color: transparent;
-fx-background-radius: 1.0em; /* large value to make sure this remains circular */
-fx-padding: 0.333333em; /* 4 -- radius of the inner black dot when selected */
-fx-background-insets: 3 2 1 2;
}
.radio-button:selected > .radio,.radio-button:hover > .radio {
-fx-fill-color: #e2b14a;
}
.radio-button:pressed > .radio {
-fx-background-color: #e2ab40;
}
.radio-button:selected > .radio > .dot {
-fx-background-color: #e2b14a;
}
/*common things*/
.check-box:hover > .box,
.check-box:selected > .box,
.radio-button:hover > .radio,
.radio-button:selected > .radio {
-fx-background-color: linear-gradient(to bottom, white, #efefef);
}
.check-box:pressed > .box,
.radio-button:pressed > .radio {
-fx-background-color: #e2ab40;
}
.hyperlink {
-fx-text-fill: #c88600;
}
.internalExtension {
-fx-background-color: #fff0e3;
}
.disconnectedExtension {
-fx-background-color: #CCCCCC;
}
.connectedExtension {
-fx-background-color: #FFFFFF;
}

View File

@ -15,7 +15,7 @@
<AnchorPane prefHeight="200.0" prefWidth="200.0">
<children>
<ImageView fx:id="img_logo" fitHeight="228.0" fitWidth="217.0" layoutX="23.0" layoutY="23.0" pickOnBounds="true" preserveRatio="true" />
<Label fx:id="version" layoutX="260.0" layoutY="23.0" text="G-Earth $version" textFill="#000000b2">
<Label fx:id="version" layoutX="260.0" layoutY="23.0" text="\$theme $version" textFill="#000000b2">
<font>
<Font size="18.0" />
</font>