レポジトリ種類: Mercurial
#include <FL/Fl_File_Chooser.H>
#include <cstdlib>
#include "background.hh"
#include "misc.hh"
#include "widget.hh"
namespace fe {
Background::Background() {}
Background::~Background() {}
uw::Mode Background::getMode() {
Fl_Choice *choice = Widget::getModeChoice();
if (!choice) return uw::Mode::TILE;
switch (choice->value()) {
case 0: return uw::Mode::TILE;
case 1: return uw::Mode::CENTER;
case 2: return uw::Mode::FILL;
default: return uw::Mode::TILE;
}
}
void Background::chooseImageCb(Fl_Widget *, void *) {
const char *homedir = std::getenv("HOME");
std::string defpath;
if (homedir) {
std::string userdir = std::string(homedir) + "/.local/share/wallpapers";
std::string localusr = "/usr/local/share/wallpapers";
std::string sysusr = "/usr/share/wallpapers";
if (Misc::isExist(userdir)) defpath = userdir;
else if (Misc::isExist(localusr)) defpath = localusr;
else defpath = sysusr;
}
Fl_File_Chooser chooser(defpath.c_str(), "*.{png,jpg}",
Fl_File_Chooser::SINGLE, "画像を御選択下さい・・・");
chooser.show();
while (chooser.shown()) Fl::wait();
if (chooser.value() != nullptr) {
Background b;
b.setFilename(chooser.value());
Widget::getSetButton()->activate();
}
}
void Background::setWallpaperCb(Fl_Widget *, void *) {
Background b;
if (!b.getFilename().empty()) {
uw::Background bg(b.getFilename());
bg.setWallpaper(b.getMode());
Widget::getSetButton()->deactivate();
}
}
}