GWinWrap/src/versions/v0.0.1/Controller.java

195 lines
9.4 KiB
Java

import javafx.stage.Stage;
import javafx.fxml.FXML;
import javafx.stage.FileChooser;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.layout.AnchorPane;
import javafx.scene.image.ImageView;
import javafx.scene.image.Image;
import javafx.scene.media.Media;
import javafx.scene.media.MediaView;
import javafx.scene.media.MediaPlayer;
import javafx.scene.control.*;
import javafx.event.ActionEvent;
import java.io.*;
public class Controller {
private FileChooser fileChooser = new FileChooser();
private String tmpPath, resolution, xScreenVal, output,
startScrpt = System.getProperty("user.dir") + "/resources/bin/StartXWW.sh",
ffmpg = System.getProperty("user.dir") + "/resources/bin/ffmpegthumbnailer";
private int applyType = 1;
private Stage fileChooserStage;
private Image imgPath;
private Process pb;
private File file;
private FileWriter fileWriter;
@FXML private AnchorPane imgVideoField;
@FXML private ImageView imgView;
@FXML private ListView<?> selXScreenSvr;
@FXML private TextField txtField;
@FXML private Label errorField;
@FXML private CheckBox lftScrn, rghtScrn, useXSvrn;
@FXML private ChoiceBox<?> listLftRes, listRgthRes, listSaveLoc;
@FXML private Button applyBttn, closeBttn, dirBttn,
killBttn, restartBttn, saveBttn;
@FXML
void closeProg(ActionEvent event) {
System.exit(0);
}
@FXML
void getImg(ActionEvent event) throws Exception {
fileChooser.setTitle("Open Image File");
tmpPath = "" + fileChooser.showOpenDialog(fileChooserStage);
txtField.setText(tmpPath);
if (txtField.getText().toLowerCase().contains(".mp4") ||
txtField.getText().toLowerCase().contains(".mkv") ||
txtField.getText().toLowerCase().contains(".mpg") ||
txtField.getText().toLowerCase().contains(".mpeg") ||
txtField.getText().toLowerCase().contains(".wmv") ||
txtField.getText().toLowerCase().contains(".flv") ||
txtField.getText().toLowerCase().contains(".webm") ||
txtField.getText().toLowerCase().contains(".avi")) {
/* ########## FOR FUTURE PLAYING VIDEO ##########
pb = new ProcessBuilder("mplayer", "-slave", "-quiet", "-idle", tmpPath).start();
Media media = new Media(getClass().getResource("test.mp4").toString());
// Create the player and set to play automatically.
final MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaPlayer.setAutoPlay(true);
final MediaView mediaView = new MediaView(mediaPlayer);
imgVideoField.getChildren().clear();
imgVideoField.getChildren().addAll(mediaView);
*/
String movieImg = ffmpg + " -w -t='00:10:00' -c jpg -i " + tmpPath +
" -s 800 -o /tmp/image.jpg";
pb = Runtime.getRuntime().exec(movieImg);
pb.waitFor();
imgPath = new Image("file://" + "/tmp/image.jpg");
tmpPath = "/tmp/image.jpg";
}
else {
imgPath = new Image("file://" + tmpPath);
}
imgView.setFitWidth(500);
imgView.setFitHeight(375);
imgView.setImage(imgPath);
String title = "" + tmpPath;
final ImageView imgViewPoped = new ImageView("file://" + tmpPath);
setClick(imgViewPoped, title);
if(txtField.getText().toLowerCase().contains(".jpg") ||
txtField.getText().toLowerCase().contains(".png"))
applyType = 2;
}
void setClick(ImageView imgViewPoped, String title) {
imgView.setOnMouseClicked(e -> {
imgViewPoped.setLayoutX(0);
imgViewPoped.setLayoutY(0);
Stage popOut = new Stage();
Pane pane = new Pane();
imgViewPoped.fitWidthProperty().bind(pane.widthProperty());
imgViewPoped.fitHeightProperty().bind(pane.heightProperty());
pane.getChildren().addAll(imgViewPoped);
Scene scene = new Scene(pane, 800, 600);
popOut.setTitle(title);
popOut.setScene(scene);
popOut.show();
});
}
@FXML
void killXWinWrp(ActionEvent event) throws Exception {
pb = Runtime.getRuntime().exec("killall xwinwrap &");
}
@FXML
void restartXWinWrp(ActionEvent event) throws Exception {
pb = Runtime.getRuntime().exec("killall xwinwrap &");
pb = Runtime.getRuntime().exec(startScrpt);
}
@FXML
void passXScreenVal() {
xScreenVal = "" + selXScreenSvr.getSelectionModel().getSelectedItem();
}
@FXML
void saveToFile(ActionEvent event) throws Exception {
// Saves to file with selected and needed settings
if(txtField.getText().toLowerCase().contains(".jpg") ||
txtField.getText().toLowerCase().contains(".png"))
file = new File(System.getProperty("user.home") + "/" + ".config/nitrogen/bg-saved.cfg");
else
file = new File(System.getProperty("user.home") + "/" + listSaveLoc.getValue());
fileWriter = new FileWriter(file);
errorField.setText("");
if (lftScrn.isSelected() == true && rghtScrn.isSelected() == true)
errorField.setText("Please only check one...");
else if (lftScrn.isSelected() == false && rghtScrn.isSelected() == false)
errorField.setText("Please check one...");
else if (lftScrn.isSelected() == true && rghtScrn.isSelected() == false) {
resolution = "" + listLftRes.getValue();
startSave();
}
else if (rghtScrn.isSelected() == true && lftScrn.isSelected() == false) {
resolution = "" + listLftRes.getValue() + "" + listRgthRes.getValue();
startSave();
} else { startSave(); }
}
void startSave() throws Exception {
// XSCREENSAVER
if (useXSvrn.isSelected() == true) {
output = "xwinwrap -ov -g " + resolution + " -st -sp -b -nf -s -ni -- /usr/lib/xscreensaver/" + xScreenVal + " -window-id WID -root";
fileWriter.write(output);
applyType = 1;
// GIF
} else if (txtField.getText().toLowerCase().contains(".gif")) {
output = "xwinwrap -ov -g " + resolution + " -st -sp -b -nf -s -ni -- gifview -a -w WID " + txtField.getText();
fileWriter.write(output);
applyType = 1;
// Standard images using nitrogen
} else if(txtField.getText().toLowerCase().contains(".jpg") ||
txtField.getText().toLowerCase().contains(".png")) {
output = "[xin_0] \n file=" + txtField.getText() + "\nmode=0 \nbgcolor=#000000\n" +
"[xin_1] \nfile=" + txtField.getText() + "\nmode=0 \nbgcolor=#000000";
fileWriter.write(output);
applyType = 2;
//VIDEO
} else {
output = "xwinwrap -ov -g " + resolution + " -st -sp -b -nf -s -ni -- mplayer -wid WID -nosound -loop 0 " + txtField.getText();
fileWriter.write(output);
applyType = 1;
}
fileWriter.close();
}
@FXML
void applySttngs(ActionEvent event) throws Exception {
pb = Runtime.getRuntime().exec("killall xwinwrap &");
if (applyType == 1) {
pb = Runtime.getRuntime().exec(startScrpt);
} else if (applyType == 2) {
pb = Runtime.getRuntime().exec("nitrogen --restore");
} else
pb = Runtime.getRuntime().exec("nitrogen --restore");
}
@FXML
void initialize() {
assert applyBttn != null : "fx:id=\"applyBttn\" was not injected: check your FXML file 'Window.fxml'.";
assert closeBttn != null : "fx:id=\"closeBttn\" was not injected: check your FXML file 'Window.fxml'.";
assert dirBttn != null : "fx:id=\"dirBttn\" was not injected: check your FXML file 'Window.fxml'.";
assert errorField != null : "fx:id=\"errorField\" was not injected: check your FXML file 'Window.fxml'.";
assert imgVideoField != null : "fx:id=\"imgVideoField\" was not injected: check your FXML file 'Window.fxml'.";
assert imgView != null : "fx:id=\"imgView\" was not injected: check your FXML file 'Window.fxml'.";
assert killBttn != null : "fx:id=\"killBttn\" was not injected: check your FXML file 'Window.fxml'.";
assert lftScrn != null : "fx:id=\"lftScrn\" was not injected: check your FXML file 'Window.fxml'.";
assert listLftRes != null : "fx:id=\"listLftRes\" was not injected: check your FXML file 'Window.fxml'.";
assert listRgthRes != null : "fx:id=\"listRgthRes\" was not injected: check your FXML file 'Window.fxml'.";
assert listSaveLoc != null : "fx:id=\"listSaveLoc\" was not injected: check your FXML file 'Window.fxml'.";
assert restartBttn != null : "fx:id=\"restartBttn\" was not injected: check your FXML file 'Window.fxml'.";
assert rghtScrn != null : "fx:id=\"rghtScrn\" was not injected: check your FXML file 'Window.fxml'.";
assert saveBttn != null : "fx:id=\"saveBttn\" was not injected: check your FXML file 'Window.fxml'.";
assert selXScreenSvr != null : "fx:id=\"selXScreenSvr\" was not injected: check your FXML file 'Window.fxml'.";
assert txtField != null : "fx:id=\"txtField\" was not injected: check your FXML file 'Window.fxml'.";
assert useXSvrn != null : "fx:id=\"useXSvrn\" was not injected: check your FXML file 'Window.fxml'.";
}
}