Some things for effects support
This commit is contained in:
		
							parent
							
								
									092616039e
								
							
						
					
					
						commit
						f20ac83c37
					
				
					 14 changed files with 363 additions and 46 deletions
				
			
		
							
								
								
									
										6
									
								
								.idea/vcs.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.idea/vcs.xml
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,6 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<project version="4">
 | 
			
		||||
  <component name="VcsDirectoryMappings">
 | 
			
		||||
    <mapping directory="$PROJECT_DIR$" vcs="Git" />
 | 
			
		||||
  </component>
 | 
			
		||||
</project>
 | 
			
		||||
| 
						 | 
				
			
			@ -46,7 +46,7 @@ public class AboutController implements Initializable {
 | 
			
		|||
        });
 | 
			
		||||
        gitHubHLink.setOnAction(ActionEvent-> {
 | 
			
		||||
            try {
 | 
			
		||||
                hs.showDocument("https://github.com/developersu/LoLed");
 | 
			
		||||
                hs.showDocument("https://github.com/developersu/LogiLed");
 | 
			
		||||
            } catch (Exception ignored){}   // No luck for linux =(
 | 
			
		||||
        });
 | 
			
		||||
        blogspotHLink.setOnAction(ActionEvent-> {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										20
									
								
								src/main/java/logiled/Controllers/EffectsController.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/main/java/logiled/Controllers/EffectsController.java
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,20 @@
 | 
			
		|||
package logiled.Controllers;
 | 
			
		||||
 | 
			
		||||
import javafx.fxml.FXML;
 | 
			
		||||
import javafx.fxml.Initializable;
 | 
			
		||||
import javafx.scene.control.ToggleGroup;
 | 
			
		||||
 | 
			
		||||
import java.net.URL;
 | 
			
		||||
import java.util.ResourceBundle;
 | 
			
		||||
 | 
			
		||||
public class EffectsController implements Initializable {
 | 
			
		||||
 | 
			
		||||
    @FXML
 | 
			
		||||
    private ToggleGroup effectsToggleGrp;
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void initialize(URL url, ResourceBundle resourceBundle) {
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -14,7 +14,7 @@ import java.util.HashMap;
 | 
			
		|||
import java.util.List;
 | 
			
		||||
import java.util.ResourceBundle;
 | 
			
		||||
 | 
			
		||||
public class KbrdController implements Initializable {
 | 
			
		||||
public class KeysLedsController implements Initializable {
 | 
			
		||||
 | 
			
		||||
    @FXML
 | 
			
		||||
    private Button
 | 
			
		||||
| 
						 | 
				
			
			@ -36,19 +36,16 @@ public class KbrdController implements Initializable {
 | 
			
		|||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void initialize(URL url, ResourceBundle resourceBundle) {
 | 
			
		||||
        rulesVBox.getChildren().addListener(new ListChangeListener<Node>() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onChanged(Change<? extends Node> change) {
 | 
			
		||||
                change.next();                              // Get changes
 | 
			
		||||
                if (change.wasAdded()){                     // If something added, turn on ability to remove such rule
 | 
			
		||||
                    remRuleBtn.setDisable(false);
 | 
			
		||||
                    return;
 | 
			
		||||
                }                                           //  Otherwise, check if we have anything inside the pane
 | 
			
		||||
                if (rulesVBox.getChildren().isEmpty())     // If so, select latest available 'box'
 | 
			
		||||
                    remRuleBtn.setDisable(true);
 | 
			
		||||
                else                                        // If the pane is empty, disable 'Remove' button.
 | 
			
		||||
                    RuleBox.select((RuleBox) rulesVBox.getChildren().get(rulesVBox.getChildren().size()-1));
 | 
			
		||||
            }
 | 
			
		||||
        rulesVBox.getChildren().addListener((ListChangeListener<Node>) change -> {
 | 
			
		||||
            change.next();                              // Get changes
 | 
			
		||||
            if (change.wasAdded()){                     // If something added, turn on ability to remove such rule
 | 
			
		||||
                remRuleBtn.setDisable(false);
 | 
			
		||||
                return;
 | 
			
		||||
            }                                           //  Otherwise, check if we have anything inside the pane
 | 
			
		||||
            if (rulesVBox.getChildren().isEmpty())     // If so, select latest available 'box'
 | 
			
		||||
                remRuleBtn.setDisable(true);
 | 
			
		||||
            else                                        // If the pane is empty, disable 'Remove' button.
 | 
			
		||||
                RuleBox.select((RuleBox) rulesVBox.getChildren().get(rulesVBox.getChildren().size()-1));
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        addRuleBtn.setOnAction(ActionEvent -> rulesVBox.getChildren().add(new RuleBox()));
 | 
			
		||||
| 
						 | 
				
			
			@ -89,6 +86,8 @@ public class KbrdController implements Initializable {
 | 
			
		|||
            if (ledSingleRuleSet != null)
 | 
			
		||||
                ledSet.add(ledSingleRuleSet);
 | 
			
		||||
        }
 | 
			
		||||
        if (keySet.size() == 0 && ledSet.size() == 0)
 | 
			
		||||
            return null;
 | 
			
		||||
        set.put("Key", keySet);
 | 
			
		||||
        set.put("Led", ledSet);
 | 
			
		||||
        return set;
 | 
			
		||||
| 
						 | 
				
			
			@ -2,20 +2,29 @@ package logiled.Controllers;
 | 
			
		|||
 | 
			
		||||
import javafx.fxml.FXML;
 | 
			
		||||
import javafx.fxml.Initializable;
 | 
			
		||||
import javafx.scene.control.Button;
 | 
			
		||||
import javafx.scene.control.Label;
 | 
			
		||||
import javafx.scene.control.MenuItem;
 | 
			
		||||
import javafx.scene.control.*;
 | 
			
		||||
import logiled.About.AboutWindow;
 | 
			
		||||
import logiled.MessagesConsumer;
 | 
			
		||||
import logiled.USB.Communications;
 | 
			
		||||
 | 
			
		||||
import java.net.URL;
 | 
			
		||||
import java.util.HashMap;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.ResourceBundle;
 | 
			
		||||
 | 
			
		||||
public class MainController implements Initializable {
 | 
			
		||||
    @FXML
 | 
			
		||||
    private KbrdController KbrdPaneController;
 | 
			
		||||
    private KeysLedsController KeysLedsController;
 | 
			
		||||
 | 
			
		||||
    @FXML
 | 
			
		||||
    private EffectsController EffectsController;
 | 
			
		||||
 | 
			
		||||
    @FXML
 | 
			
		||||
    private TabPane MainTabPane;
 | 
			
		||||
    /*
 | 
			
		||||
    @FXML
 | 
			
		||||
    private Tab KeyLedTab, EffectsTab;
 | 
			
		||||
    */
 | 
			
		||||
    @FXML
 | 
			
		||||
    private Button applyBtn;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -24,6 +33,8 @@ public class MainController implements Initializable {
 | 
			
		|||
 | 
			
		||||
    @FXML
 | 
			
		||||
    private MenuItem aboutMenuItem;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void initialize(URL url, ResourceBundle resourceBundle) {
 | 
			
		||||
        aboutMenuItem.setOnAction(actionEvent -> new AboutWindow());
 | 
			
		||||
| 
						 | 
				
			
			@ -31,10 +42,16 @@ public class MainController implements Initializable {
 | 
			
		|||
        MessagesConsumer.getInstance().start();
 | 
			
		||||
 | 
			
		||||
        applyBtn.setOnAction(actionEvent -> {
 | 
			
		||||
            Communications communications = new Communications(KbrdPaneController.getRules());
 | 
			
		||||
            Thread commThread = new Thread(communications);
 | 
			
		||||
            commThread.setDaemon(true);
 | 
			
		||||
            commThread.start();
 | 
			
		||||
            if (MainTabPane.getSelectionModel().getSelectedItem().getId().equals("KeyLedTab")) {
 | 
			
		||||
                HashMap<String, List<byte[][]>> rules = KeysLedsController.getRules();
 | 
			
		||||
                if (rules == null)
 | 
			
		||||
                    return;
 | 
			
		||||
                Communications communications = new Communications(rules);
 | 
			
		||||
                Thread commThread = new Thread(communications);
 | 
			
		||||
                commThread.setDaemon(true);
 | 
			
		||||
                commThread.start();
 | 
			
		||||
            }
 | 
			
		||||
            //else if (MainTabPane.getSelectionModel().getSelectedItem().getId().equals("EffectsTab")) { // todo }
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,9 +36,9 @@ public class MainFx extends Application {
 | 
			
		|||
        );
 | 
			
		||||
 | 
			
		||||
        primaryStage.setTitle("LogiLed "+appVersion);
 | 
			
		||||
        primaryStage.setMinWidth(1160);
 | 
			
		||||
        primaryStage.setMinWidth(1215);
 | 
			
		||||
        primaryStage.setMinHeight(550);
 | 
			
		||||
        Scene mainScene = new Scene(root, 1160, 525);
 | 
			
		||||
        Scene mainScene = new Scene(root, 1215, 525);
 | 
			
		||||
        mainScene.getStylesheets().add("/light.css");
 | 
			
		||||
        primaryStage.setScene(mainScene);
 | 
			
		||||
        primaryStage.show();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,30 +12,98 @@ import java.util.HashMap;
 | 
			
		|||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
public class Communications implements Runnable{
 | 
			
		||||
 | 
			
		||||
    // Keys and indicators individual settings
 | 
			
		||||
    private static final byte[] commit = {
 | 
			
		||||
            0x11, (byte) 0xff, 0x0c, 0x5a, 0x00, 0x00, 0x00, 0x00,    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    private static final byte[] indicators = {  // we have 2 leds on G513
 | 
			
		||||
            //                                                         KEY   RED   GRN   BLU   -//-
 | 
			
		||||
            0x12, (byte) 0xff, 0x0c, 0x3a, 0x00, 0x40, 0x00, 0x05,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
    private static final byte[] keys = {        // Can store 14 rules
 | 
			
		||||
            //                                                         LED   RED   GRN   BLU   -//-
 | 
			
		||||
            0x12, (byte) 0xff, 0x0c, 0x3a, 0x00, 0x01, 0x00, 0x0e,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
    //                                          -========= Effects =========-
 | 
			
		||||
    private static final byte[] disable_colors = {
 | 
			
		||||
            0x11, (byte) 0xff, 0x0d, 0x3c, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
    private static final byte[] constant_color = {
 | 
			
		||||
            //                                         RED   GRN       BLU
 | 
			
		||||
            0x11, (byte) 0xff, 0x0d, 0x3c, 0x00, 0x01, 0x00, 0x00,     0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
    private static final byte[] wave_horizontal = {
 | 
			
		||||
            //                                                                                   !!               !!
 | 
			
		||||
            0x11, (byte) 0xff, 0x0d, 0x3c, 0x00, 0x04, 0x00, 0x00,      0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x64, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
    private static final byte[] wave_vertical  = {
 | 
			
		||||
            //                                                                                   !!               !!
 | 
			
		||||
            0x11, (byte) 0xff, 0x0d, 0x3c, 0x00, 0x04, 0x00, 0x00,      0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x64, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
    private static final byte[] wave_center_to_edge = {
 | 
			
		||||
            //                                                                                   !!               !!
 | 
			
		||||
            0x11, (byte) 0xff, 0x0d, 0x3c, 0x00, 0x04, 0x00, 0x00,      0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x64, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
    private static final byte[] wave_horizontal_reverse = {
 | 
			
		||||
            //                                                                                   !!               !!
 | 
			
		||||
            0x11, (byte) 0xff, 0x0d, 0x3c, 0x00, 0x04, 0x00, 0x00,      0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x64, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
    private static final byte[] wave_vertical_reverse = {
 | 
			
		||||
            //                                                                                   !!               !!
 | 
			
		||||
            0x11, (byte) 0xff, 0x0d, 0x3c, 0x00, 0x04, 0x00, 0x00,      0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x64, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
    private static final byte[] wave_edge_to_center = {
 | 
			
		||||
            //                                                                                   !!               !!
 | 
			
		||||
            0x11, (byte) 0xff, 0x0d, 0x3c, 0x00, 0x04, 0x00, 0x00,      0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x64, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
    private static final byte[] cycle = {
 | 
			
		||||
            //                                                                            !!    !!
 | 
			
		||||
            0x11, (byte) 0xff, 0x0d, 0x3c, 0x00, 0x03, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
    private static final byte[] breathe = {
 | 
			
		||||
            //                                         RED   GRN       BLU    !!    !!
 | 
			
		||||
            0x11, (byte) 0xff, 0x0d, 0x3c, 0x00, 0x02, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
    private static final byte[] cirles_on_press = {
 | 
			
		||||
            //                                         RED   GRN       BLU                ms
 | 
			
		||||
            0x11, (byte) 0xff, 0x0d, 0x3c, 0x00, 0x06, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // Game-key settings
 | 
			
		||||
    //private static final byte[] game_key_rule
 | 
			
		||||
    private static final byte[] game_key_set_default = {
 | 
			
		||||
            0x11, (byte) 0xff, 0x03, 0x3c, 0x00, 0x00, 0x00, 0x00,     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
 | 
			
		||||
            0x00,        0x00, 0x00, 0x00
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    private DeviceHandle handler;
 | 
			
		||||
 | 
			
		||||
    // What would be sent to keyboard
 | 
			
		||||
    private List<byte[]> keyLedCommands;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Used to set keys & leds
 | 
			
		||||
     * @param keyLedSet : set of rules, always not empty and not null
 | 
			
		||||
     * */
 | 
			
		||||
    public Communications(HashMap<String, List<byte[][]>> keyLedSet){
 | 
			
		||||
        keyLedCommands = new ArrayList<>();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -71,9 +139,8 @@ public class Communications implements Runnable{
 | 
			
		|||
 | 
			
		||||
        if (appendTo > 8)
 | 
			
		||||
            keyLedCommands.add(Arrays.copyOfRange(command, 0, command.length));
 | 
			
		||||
        // If any command has been added to chain, add commit command to the end
 | 
			
		||||
        if (keyLedCommands.size() > 0)
 | 
			
		||||
            keyLedCommands.add(commit);
 | 
			
		||||
        // Add commit command to the end
 | 
			
		||||
        keyLedCommands.add(commit);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
| 
						 | 
				
			
			@ -128,3 +195,31 @@ public class Communications implements Runnable{
 | 
			
		|||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
/*
 | 
			
		||||
   ANY
 | 
			
		||||
   0x11, 0xff, ???, 0x3c
 | 
			
		||||
 | 
			
		||||
   waves
 | 
			
		||||
   cwave
 | 
			
		||||
                                  !!    !!
 | 
			
		||||
   0x11, 0xff, 0x0d, 0x3c, 0x00, 0x04, 0x56, 0x00       0x00, ----, ----, ----, ----, ====, 0x64, ????,          ?!!?, 0x00, 0x00, 0x00
 | 
			
		||||
 | 
			
		||||
   hwave
 | 
			
		||||
   vwave
 | 
			
		||||
                                  !!     !!
 | 
			
		||||
   0x11, 0xff, 0x0d, 0x3c, 0x00, 0x04, 0x55, 0x00       0x00, ----, ----, ----, ----, ====, 0x64, ????,          ?!!?, 0x00, 0x00, 0x00
 | 
			
		||||
 | 
			
		||||
   cycle
 | 
			
		||||
                                  !!     !!
 | 
			
		||||
   0x11, 0xff, 0x0d, 0x3c, 0x00, 0x03, 0x55, 0x00       0x00, ----, ----, ----, ----, 0x00, 0x64, ????,          ?!!?, 0x00, 0x00, 0x00
 | 
			
		||||
 | 
			
		||||
   breathing
 | 
			
		||||
 | 
			
		||||
   0x11, 0xff, 0x0d, 0x3c, 0x00, 0x02, RED_, GRN_,      BLU_ ----, ----, ----, ----, 0x00, 0x64, ????,          ?!!?, 0x00, 0x00, 0x00
 | 
			
		||||
 | 
			
		||||
----------------------
 | 
			
		||||
    hwave - new
 | 
			
		||||
    11 ff 0d 3c 00 04 00 00      00 00 00 00 e8 06 64 03        00 00 00 00
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
* */
 | 
			
		||||
| 
						 | 
				
			
			@ -34,7 +34,7 @@
 | 
			
		|||
            </VBox>
 | 
			
		||||
               </children>
 | 
			
		||||
            </HBox>
 | 
			
		||||
            <Hyperlink fx:id="gitHubHLink" text="https://github.com/developersu/LoLed" underline="true" wrapText="true">
 | 
			
		||||
            <Hyperlink fx:id="gitHubHLink" text="https://github.com/developersu/LogiLed" underline="true" wrapText="true">
 | 
			
		||||
               <graphic>
 | 
			
		||||
                  <SVGPath content="m 16.516036,0.10629161 c -8.996094,0 -16.28906297,7.29296899 -16.28906297,16.28906239 0,7.195312 4.66796897,13.300781 11.14062597,15.457031 0.8125,0.148438 1.113281,-0.355469 1.113281,-0.785156 0,-0.386719 -0.01563,-1.410156 -0.02344,-2.769532 C 7.92619,29.282073 6.969159,26.114104 6.969159,26.114104 6.23088,24.231291 5.160567,23.731291 5.160567,23.731291 3.680099,22.719573 5.273849,22.739104 5.273849,22.739104 c 1.632812,0.117187 2.492187,1.679687 2.492187,1.679687 1.453125,2.488282 3.816406,1.769532 4.742187,1.355469 0.148438,-1.054687 0.570313,-1.773437 1.035157,-2.179687 -3.617188,-0.410157 -7.421875,-1.808594 -7.421875,-8.050782 0,-1.777344 0.636718,-3.230468 1.679687,-4.371094 -0.167969,-0.414062 -0.726562,-2.0664056 0.15625,-4.3124994 0,0 1.371094,-0.4375 4.480469,1.6718758 1.300781,-0.3632818 2.695312,-0.5429688 4.078125,-0.5468758 1.382813,0.00391 2.777344,0.183594 4.078125,0.5468758 3.109375,-2.1093758 4.476562,-1.6718758 4.476562,-1.6718758 0.886719,2.2460938 0.328126,3.8984374 0.160157,4.3124994 1.046875,1.140626 1.675781,2.59375 1.675781,4.371094 0,6.257813 -3.808594,7.632813 -7.4375,8.039063 0.585938,0.5 1.105469,1.496093 1.105469,3.015625 0,2.175781 -0.01953,3.933594 -0.01953,4.46875 0,0.433594 0.292968,0.941406 1.121093,0.785156 C 28.141037,29.692229 32.8051,23.590666 32.8051,16.395354 32.8051,7.3992606 25.512131,0.10629161 16.516037,0.10629161" fill="#171515" />
 | 
			
		||||
               </graphic>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										97
									
								
								src/main/resources/EffectsPane.fxml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								src/main/resources/EffectsPane.fxml
									
									
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,97 @@
 | 
			
		|||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
 | 
			
		||||
<?import javafx.geometry.Insets?>
 | 
			
		||||
<?import javafx.scene.control.ColorPicker?>
 | 
			
		||||
<?import javafx.scene.control.RadioButton?>
 | 
			
		||||
<?import javafx.scene.control.Separator?>
 | 
			
		||||
<?import javafx.scene.control.Slider?>
 | 
			
		||||
<?import javafx.scene.control.ToggleGroup?>
 | 
			
		||||
<?import javafx.scene.layout.HBox?>
 | 
			
		||||
<?import javafx.scene.layout.VBox?>
 | 
			
		||||
 | 
			
		||||
<VBox spacing="5.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="logiled.Controllers.EffectsController">
 | 
			
		||||
      <padding>
 | 
			
		||||
         <Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />
 | 
			
		||||
      </padding>
 | 
			
		||||
      <children>
 | 
			
		||||
         <HBox alignment="CENTER_LEFT" spacing="5.0">
 | 
			
		||||
            <children>
 | 
			
		||||
               <RadioButton mnemonicParsing="false" prefWidth="210.0" text="%effect_disable">
 | 
			
		||||
               <toggleGroup>
 | 
			
		||||
                  <ToggleGroup fx:id="effectsToggleGrp" />
 | 
			
		||||
               </toggleGroup></RadioButton>
 | 
			
		||||
            </children>
 | 
			
		||||
         </HBox>
 | 
			
		||||
         <Separator prefWidth="200.0" />
 | 
			
		||||
         <HBox alignment="CENTER_LEFT" spacing="5.0">
 | 
			
		||||
            <children>
 | 
			
		||||
               <RadioButton mnemonicParsing="false" prefWidth="210.0" selected="true" text="%effect_constant" toggleGroup="$effectsToggleGrp" />
 | 
			
		||||
               <ColorPicker />
 | 
			
		||||
            </children>
 | 
			
		||||
         </HBox>
 | 
			
		||||
         <Separator prefWidth="200.0" />
 | 
			
		||||
         <HBox alignment="CENTER_LEFT" spacing="5.0">
 | 
			
		||||
            <children>
 | 
			
		||||
               <RadioButton mnemonicParsing="false" prefWidth="210.0" text="%effect_breath" toggleGroup="$effectsToggleGrp" />
 | 
			
		||||
               <ColorPicker />
 | 
			
		||||
            </children>
 | 
			
		||||
         </HBox>
 | 
			
		||||
         <Separator prefWidth="200.0" />
 | 
			
		||||
         <HBox alignment="CENTER_LEFT" spacing="5.0">
 | 
			
		||||
            <children>
 | 
			
		||||
               <RadioButton mnemonicParsing="false" prefWidth="210.0" text="%effect_cirles_on_press" toggleGroup="$effectsToggleGrp" />
 | 
			
		||||
               <Slider blockIncrement="100.0" majorTickUnit="5000.0" max="5000.0" min="1000.0" minorTickCount="1000" prefWidth="300.0" value="1000.0" />
 | 
			
		||||
               <ColorPicker />
 | 
			
		||||
            </children>
 | 
			
		||||
         </HBox>
 | 
			
		||||
         <Separator prefWidth="200.0" />
 | 
			
		||||
         <HBox alignment="CENTER_LEFT" spacing="5.0">
 | 
			
		||||
            <children>
 | 
			
		||||
               <RadioButton mnemonicParsing="false" prefWidth="210.0" text="%effect_cycle" toggleGroup="$effectsToggleGrp" />
 | 
			
		||||
               <Slider majorTickUnit="200.0" max="200.0" min="20.0" minorTickCount="20" prefWidth="300.0" value="20.0" />
 | 
			
		||||
            </children>
 | 
			
		||||
         </HBox>
 | 
			
		||||
         <Separator prefWidth="200.0" />
 | 
			
		||||
         <HBox alignment="CENTER_LEFT" spacing="5.0">
 | 
			
		||||
            <children>
 | 
			
		||||
               <RadioButton mnemonicParsing="false" prefWidth="210.0" text="%effect_wave_horizontal" toggleGroup="$effectsToggleGrp" />
 | 
			
		||||
               <Slider blockIncrement="100.0" majorTickUnit="5000.0" max="5000.0" min="1000.0" minorTickCount="1000" prefWidth="300.0" value="1000.0" />
 | 
			
		||||
            </children>
 | 
			
		||||
         </HBox>
 | 
			
		||||
         <Separator prefWidth="200.0" />
 | 
			
		||||
         <HBox alignment="CENTER_LEFT" spacing="5.0">
 | 
			
		||||
            <children>
 | 
			
		||||
               <RadioButton mnemonicParsing="false" prefWidth="210.0" text="%effect_wave_vertical" toggleGroup="$effectsToggleGrp" />
 | 
			
		||||
               <Slider blockIncrement="100.0" majorTickUnit="5000.0" max="5000.0" min="1000.0" minorTickCount="1000" prefWidth="300.0" value="1000.0" />
 | 
			
		||||
            </children>
 | 
			
		||||
         </HBox>
 | 
			
		||||
         <Separator prefWidth="200.0" />
 | 
			
		||||
         <HBox alignment="CENTER_LEFT" spacing="5.0">
 | 
			
		||||
            <children>
 | 
			
		||||
               <RadioButton mnemonicParsing="false" prefWidth="210.0" text="%effect_wave_center_to_edge" toggleGroup="$effectsToggleGrp" />
 | 
			
		||||
               <Slider blockIncrement="100.0" majorTickUnit="5000.0" max="5000.0" min="1000.0" minorTickCount="1000" prefWidth="300.0" value="1000.0" />
 | 
			
		||||
            </children>
 | 
			
		||||
         </HBox>
 | 
			
		||||
         <Separator prefWidth="200.0" />
 | 
			
		||||
         <HBox alignment="CENTER_LEFT" spacing="5.0">
 | 
			
		||||
            <children>
 | 
			
		||||
               <RadioButton mnemonicParsing="false" prefWidth="210.0" text="%effect_wave_horizontal_reverse" toggleGroup="$effectsToggleGrp" />
 | 
			
		||||
               <Slider blockIncrement="100.0" majorTickUnit="5000.0" max="5000.0" min="1000.0" minorTickCount="1000" prefWidth="300.0" value="1000.0" />
 | 
			
		||||
            </children>
 | 
			
		||||
         </HBox>
 | 
			
		||||
         <Separator prefWidth="200.0" />
 | 
			
		||||
         <HBox alignment="CENTER_LEFT" spacing="5.0">
 | 
			
		||||
            <children>
 | 
			
		||||
               <RadioButton mnemonicParsing="false" prefWidth="210.0" text="%effect_wave_vertical_reverse" toggleGroup="$effectsToggleGrp" />
 | 
			
		||||
               <Slider blockIncrement="100.0" majorTickUnit="5000.0" max="5000.0" min="1000.0" minorTickCount="1000" prefWidth="300.0" value="1000.0" />
 | 
			
		||||
            </children>
 | 
			
		||||
         </HBox>
 | 
			
		||||
         <Separator prefWidth="200.0" />
 | 
			
		||||
         <HBox alignment="CENTER_LEFT" spacing="5.0">
 | 
			
		||||
            <children>
 | 
			
		||||
               <RadioButton mnemonicParsing="false" prefWidth="210.0" text="%effect_wave_edge_to_center" toggleGroup="$effectsToggleGrp" />
 | 
			
		||||
               <Slider blockIncrement="100.0" majorTickUnit="5000.0" max="5000.0" min="1000.0" minorTickCount="1000" prefWidth="300.0" value="1000.0" />
 | 
			
		||||
            </children>
 | 
			
		||||
         </HBox>
 | 
			
		||||
      </children>
 | 
			
		||||
</VBox>
 | 
			
		||||
| 
						 | 
				
			
			@ -13,7 +13,7 @@
 | 
			
		|||
<?import javafx.scene.shape.SVGPath?>
 | 
			
		||||
<?import javafx.scene.text.Font?>
 | 
			
		||||
 | 
			
		||||
<VBox spacing="5.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="logiled.Controllers.KbrdController">
 | 
			
		||||
<VBox spacing="5.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="logiled.Controllers.KeysLedsController">
 | 
			
		||||
   <children>
 | 
			
		||||
      <ToolBar>
 | 
			
		||||
         <items>
 | 
			
		||||
| 
						 | 
				
			
			@ -7,8 +7,12 @@
 | 
			
		|||
<?import javafx.scene.control.MenuBar?>
 | 
			
		||||
<?import javafx.scene.control.MenuItem?>
 | 
			
		||||
<?import javafx.scene.control.ScrollPane?>
 | 
			
		||||
<?import javafx.scene.control.SeparatorMenuItem?>
 | 
			
		||||
<?import javafx.scene.control.Tab?>
 | 
			
		||||
<?import javafx.scene.control.TabPane?>
 | 
			
		||||
<?import javafx.scene.control.ToolBar?>
 | 
			
		||||
<?import javafx.scene.control.Tooltip?>
 | 
			
		||||
<?import javafx.scene.layout.BorderPane?>
 | 
			
		||||
<?import javafx.scene.layout.HBox?>
 | 
			
		||||
<?import javafx.scene.layout.Pane?>
 | 
			
		||||
<?import javafx.scene.layout.VBox?>
 | 
			
		||||
<?import javafx.scene.shape.SVGPath?>
 | 
			
		||||
| 
						 | 
				
			
			@ -19,12 +23,44 @@
 | 
			
		|||
                    <menus>
 | 
			
		||||
                      <Menu mnemonicParsing="false" text="%menu_File">
 | 
			
		||||
                        <items>
 | 
			
		||||
                          <MenuItem mnemonicParsing="false" text="Close" />
 | 
			
		||||
                  <MenuItem mnemonicParsing="false" text="todo">
 | 
			
		||||
                     <graphic>
 | 
			
		||||
                        <SVGPath content="M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z" />
 | 
			
		||||
                     </graphic>
 | 
			
		||||
                  </MenuItem>
 | 
			
		||||
                  <Menu mnemonicParsing="false" text="Unspecified Menu">
 | 
			
		||||
                    <items>
 | 
			
		||||
                        <SeparatorMenuItem mnemonicParsing="false" />
 | 
			
		||||
                      <MenuItem mnemonicParsing="false" text="Action 1" />
 | 
			
		||||
                    </items>
 | 
			
		||||
                     <graphic>
 | 
			
		||||
                        <SVGPath content="M13.5,8H12V13L16.28,15.54L17,14.33L13.5,12.25V8M13,3A9,9 0 0,0 4,12H1L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3" />
 | 
			
		||||
                     </graphic>
 | 
			
		||||
                  </Menu>
 | 
			
		||||
                  <SeparatorMenuItem mnemonicParsing="false" />
 | 
			
		||||
                  <MenuItem mnemonicParsing="false" text="todo">
 | 
			
		||||
                     <graphic>
 | 
			
		||||
                        <SVGPath content="M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z" />
 | 
			
		||||
                     </graphic>
 | 
			
		||||
                  </MenuItem>
 | 
			
		||||
                  <MenuItem mnemonicParsing="false" text="todo">
 | 
			
		||||
                     <graphic>
 | 
			
		||||
                        <SVGPath content="M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z" />
 | 
			
		||||
                     </graphic>
 | 
			
		||||
                  </MenuItem>
 | 
			
		||||
                  <SeparatorMenuItem mnemonicParsing="false" />
 | 
			
		||||
                          <MenuItem mnemonicParsing="false" text="todo">
 | 
			
		||||
                     <graphic>
 | 
			
		||||
                        <SVGPath content="M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z" />
 | 
			
		||||
                     </graphic></MenuItem>
 | 
			
		||||
                        </items>
 | 
			
		||||
                      </Menu>
 | 
			
		||||
                      <Menu mnemonicParsing="false" text="%menu_Edit">
 | 
			
		||||
                        <items>
 | 
			
		||||
                          <MenuItem mnemonicParsing="false" text="Delete" />
 | 
			
		||||
                          <MenuItem mnemonicParsing="false" text="todo">
 | 
			
		||||
                     <graphic>
 | 
			
		||||
                        <SVGPath content="M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z" />
 | 
			
		||||
                     </graphic></MenuItem>
 | 
			
		||||
                        </items>
 | 
			
		||||
                      </Menu>
 | 
			
		||||
                      <Menu mnemonicParsing="false" text="%menu_Help">
 | 
			
		||||
| 
						 | 
				
			
			@ -55,17 +91,42 @@
 | 
			
		|||
         <center>
 | 
			
		||||
            <VBox BorderPane.alignment="CENTER">
 | 
			
		||||
               <children>
 | 
			
		||||
                  <HBox spacing="5.0">
 | 
			
		||||
                     <children>
 | 
			
		||||
                        <Button fx:id="applyBtn" mnemonicParsing="false" text="%btn_apply" />
 | 
			
		||||
                     </children>
 | 
			
		||||
                     <padding>
 | 
			
		||||
                        <Insets bottom="3.0" left="3.0" right="3.0" top="3.0" />
 | 
			
		||||
                     </padding>
 | 
			
		||||
                  </HBox>
 | 
			
		||||
            <ToolBar>
 | 
			
		||||
              <items>
 | 
			
		||||
                        <Button fx:id="applyBtn" mnemonicParsing="false">
 | 
			
		||||
                     <tooltip>
 | 
			
		||||
                        <Tooltip text="%btn_apply" />
 | 
			
		||||
                     </tooltip>
 | 
			
		||||
                     <graphic>
 | 
			
		||||
                        <SVGPath content="M14,10H2V12H14V10M14,6H2V8H14V6M2,16H10V14H2V16M21.5,11.5L23,13L16,20L11.5,15.5L13,14L16,17L21.5,11.5Z" />
 | 
			
		||||
                     </graphic>
 | 
			
		||||
                  </Button>
 | 
			
		||||
              </items>
 | 
			
		||||
            </ToolBar>
 | 
			
		||||
            <TabPane fx:id="MainTabPane" side="LEFT" tabClosingPolicy="UNAVAILABLE" VBox.vgrow="ALWAYS">
 | 
			
		||||
              <tabs>
 | 
			
		||||
                <Tab fx:id="KeyLedTab">
 | 
			
		||||
                     <content>
 | 
			
		||||
                         <ScrollPane fitToWidth="true">
 | 
			
		||||
                             <fx:include fx:id="KbrdPane" source="KbrdPane.fxml" VBox.vgrow="ALWAYS" />
 | 
			
		||||
                             <fx:include fx:id="KeysLeds" source="KeysLedsPane.fxml" VBox.vgrow="ALWAYS" />
 | 
			
		||||
                         </ScrollPane>
 | 
			
		||||
                     </content>
 | 
			
		||||
                     <graphic>
 | 
			
		||||
                        <SVGPath content="M12,6A6,6 0 0,1 18,12C18,14.22 16.79,16.16 15,17.2V19A1,1 0 0,1 14,20H10A1,1 0 0,1 9,19V17.2C7.21,16.16 6,14.22 6,12A6,6 0 0,1 12,6M14,21V22A1,1 0 0,1 13,23H11A1,1 0 0,1 10,22V21H14M20,11H23V13H20V11M1,11H4V13H1V11M13,1V4H11V1H13M4.92,3.5L7.05,5.64L5.63,7.05L3.5,4.93L4.92,3.5M16.95,5.63L19.07,3.5L20.5,4.93L18.37,7.05L16.95,5.63Z" />
 | 
			
		||||
                     </graphic>
 | 
			
		||||
                </Tab>
 | 
			
		||||
                <Tab fx:id="EffectsTab">
 | 
			
		||||
                     <content>
 | 
			
		||||
                        <ScrollPane fitToWidth="true">
 | 
			
		||||
                            <fx:include fx:id="Effects" source="EffectsPane.fxml" VBox.vgrow="ALWAYS" />
 | 
			
		||||
                        </ScrollPane>
 | 
			
		||||
                     </content>
 | 
			
		||||
                     <graphic>
 | 
			
		||||
                        <SVGPath content="M7.5,5.6L5,7L6.4,4.5L5,2L7.5,3.4L10,2L8.6,4.5L10,7L7.5,5.6M19.5,15.4L22,14L20.6,16.5L22,19L19.5,17.6L17,19L18.4,16.5L17,14L19.5,15.4M22,2L20.6,4.5L22,7L19.5,5.6L17,7L18.4,4.5L17,2L19.5,3.4L22,2M13.34,12.78L15.78,10.34L13.66,8.22L11.22,10.66L13.34,12.78M14.37,7.29L16.71,9.63C17.1,10 17.1,10.65 16.71,11.04L5.04,22.71C4.65,23.1 4,23.1 3.63,22.71L1.29,20.37C0.9,20 0.9,19.35 1.29,18.96L12.96,7.29C13.35,6.9 14,6.9 14.37,7.29Z" />
 | 
			
		||||
                     </graphic>
 | 
			
		||||
                </Tab>
 | 
			
		||||
              </tabs>
 | 
			
		||||
            </TabPane>
 | 
			
		||||
               </children>
 | 
			
		||||
            </VBox>
 | 
			
		||||
         </center>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -116,10 +116,10 @@
 | 
			
		|||
    -fx-fill: #2c2c2c;
 | 
			
		||||
}
 | 
			
		||||
.tab-pane .tab:selected SVGPath, .tab-pane .tab:selected:hover SVGPath{
 | 
			
		||||
    -fx-fill: #289de8;
 | 
			
		||||
    -fx-fill: #141414;
 | 
			
		||||
}
 | 
			
		||||
.tab-pane .tab:hover SVGPath{
 | 
			
		||||
    -fx-fill: #1c6fa2;
 | 
			
		||||
    -fx-fill: #2b2b2b;
 | 
			
		||||
}
 | 
			
		||||
.tab-pane .tab{
 | 
			
		||||
    -fx-background-color: #fefefe;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -680,5 +680,16 @@ into proprietary programs.  If your program is a subroutine library, you\n\
 | 
			
		|||
may consider it more useful to permit linking proprietary applications with\n\
 | 
			
		||||
the library.  If this is what you want to do, use the GNU Lesser General\n\
 | 
			
		||||
Public License instead of this License.  But first, please read\n\
 | 
			
		||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.\n
 | 
			
		||||
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
 | 
			
		||||
menu_item_about=About
 | 
			
		||||
effect_disable=Disable backlight
 | 
			
		||||
effect_constant=Constant color
 | 
			
		||||
effect_breath=Breath
 | 
			
		||||
effect_cirles_on_press=Circles on press
 | 
			
		||||
effect_cycle=Cycle
 | 
			
		||||
effect_wave_horizontal=Wave horizontal
 | 
			
		||||
effect_wave_vertical=Wave vertical
 | 
			
		||||
effect_wave_center_to_edge=Wave from center to edges
 | 
			
		||||
effect_wave_horizontal_reverse=Wave horizontal (reverse)
 | 
			
		||||
effect_wave_vertical_reverse=Wave vertical (reverse)
 | 
			
		||||
effect_wave_edge_to_center=Wave from edges to center
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,3 +8,14 @@ about_LicenseLbl=Лицензионное соглашение
 | 
			
		|||
about_Lbl_3=Разработано и поддерживается Дмитрием Исаенко.
 | 
			
		||||
menu_item_about=О приложении
 | 
			
		||||
about_Lbl_1=LoLed распространяется по условиям лицензии GNU GPLv3.
 | 
			
		||||
effect_disable=Отключить подсветку
 | 
			
		||||
effect_constant=Постоянный цвет
 | 
			
		||||
effect_breath=Дыхание
 | 
			
		||||
effect_cirles_on_press=Круги при нажатии
 | 
			
		||||
effect_cycle=Цикл
 | 
			
		||||
effect_wave_horizontal=Волна по-горизонтали
 | 
			
		||||
effect_wave_horizontal_reverse=Волна по-горизонтали (обратная)
 | 
			
		||||
effect_wave_vertical=Волна вертикальная
 | 
			
		||||
effect_wave_vertical_reverse=Волна вертикальная (обратная)
 | 
			
		||||
effect_wave_center_to_edge=Волна от центра к краям
 | 
			
		||||
effect_wave_edge_to_center=Волна от краёв к центру
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue