ede/epanelconf/epanelconf.cpp
2007-07-18 18:20:04 +00:00

254 lines
6.0 KiB
C++

/*
* $Id$
*
* Configure window for eworkpanel
* Part of Equinox Desktop Environment (EDE).
* Copyright (c) 2000-2006 EDE Authors.
*
* This program is licenced under terms of the
* GNU General Public Licence version 2 or newer.
* See COPYING for details.
*/
#include "epanelconf.h"
#include "util.h"
#include <fltk/run.h>
#include <stdlib.h>
using namespace fltk;
// Widgets accessed from util.cpp
Input *workspaces[8];
Input* vcProgram;
Input* tdProgram;
Input* browserProgram;
Input* terminalProgram;
CheckButton* autohide_check;
ValueSlider* ws_slider;
Window* panelWindow;
// Callbacks
static void cb_Apply(Button*, void*) {
write_config();
send_workspaces();
}
static void cb_Close(Button*, void*) {
exit(0);
}
static void cb_Browse(Button*, void*) {
// char *file_types = _("Executables (*.*), *, All files (*.*), *");
// const char *fileName = fl_select_file(0, file_types, _("File selection..."));
const char *fileName = file_chooser(_("Choose volume control program"), "*.*", vcProgram->value());
if (fileName)
vcProgram->value(fileName);
}
static void cb_Br(Button*, void*) {
// char *file_types = _("Executables (*.*), *, All files (*.*), *");
// const char *fileName = fl_select_file(0, file_types, _("File selection..."));
const char *fileName = file_chooser(_("Choose time&date program"), "*.*", tdProgram->value());
if (fileName)
tdProgram->value(fileName);
}
static void cb_Browse1(Button*, void*) {
// char *file_types = _("Executables (*.*), *, All files (*.*), *");
// const char *fileName = fl_select_file(0, file_types, _("File selection..."));
const char *fileName = file_chooser(_("Choose web browser program"), "*.*", browserProgram->value());
if (fileName)
browserProgram->value(fileName);
}
static void cb_Br1(Button*, void*) {
// char *file_types = _("Executables (*.*), *, All files (*.*), *");
// const char *fileName = fl_select_file(0, file_types, _("File selection..."));
const char *fileName = file_chooser(_("Choose file manager program"), "*.*", terminalProgram->value());
if (fileName)
terminalProgram->value(fileName);
}
static void cb_ws_slider(ValueSlider*, void*) {
int val = int(ws_slider->value());
for(int n=0; n<8; n++) {
if(n<val)
workspaces[n]->activate();
else
workspaces[n]->deactivate();
}
}
// Main window
int main (int argc, char **argv)
{
Window* w;
//fl_init_locale_support("epanelconf", PREFIX"/share/locale");
{
Window* o = panelWindow = new Window(405, 270, _("Panel settings"));
w = o;
o->begin();
{
Button* o = new Button(205, 235, 90, 25, _("&Apply"));
o->callback((Callback*)cb_Apply);
}
{
Button* o = new Button(305, 235, 90, 25, _("&Close"));
o->callback((Callback*)cb_Close);
}
{
TabGroup* o = new TabGroup(10, 10, 385, 215);
o->selection_color(o->color());
o->selection_textcolor(o->textcolor());
o->begin();
{
Group* o = new Group(0, 25, 385, 190, _("Utilities"));
o->begin();
{
Group* o = new Group(10, 20, 365, 100, "Panel utilities");
o->box(ENGRAVED_BOX);
o->align(ALIGN_TOP|ALIGN_LEFT);
o->begin();
{
Input* o = vcProgram = new Input(10, 20, 245, 25, _("Volume control program:"));
o->align(ALIGN_TOP|ALIGN_LEFT);
}
{
Button* o = new Button(265, 20, 90, 25, _("&Browse..."));
o->callback((Callback*)cb_Browse);
}
{
Input* o = tdProgram = new Input(10, 65, 245, 25, _("Time and date program:"));
o->align(ALIGN_TOP|ALIGN_LEFT);
}
{
Button* o = new Button(265, 65, 90, 25, _("Br&owse..."));
o->callback((Callback*)cb_Br);
}
o->end();
}
{
Group* o = new Group(10, 140, 365, 35, _("Autohide"));
o->box(ENGRAVED_BOX);
o->align(ALIGN_TOP|ALIGN_LEFT);
o->begin();
autohide_check = new CheckButton(10, 5, 345, 25, _("Automaticaly hide panel"));
o->end();
}
o->end();
}
{
Group* o = new Group(0, 25, 385, 190, _("Workspaces"));
o->hide();
o->begin();
{
ValueSlider* o = ws_slider = new ValueSlider(120, 10, 255, 25, _("Number of workspaces: "));
o->type(ValueSlider::TICK_BELOW);
o->box(THIN_DOWN_BOX);
o->buttonbox(THIN_UP_BOX);
o->step(1);
o->callback((Callback*)cb_ws_slider);
o->align(ALIGN_LEFT|ALIGN_WRAP);
o->step(1); ;
o->range(1,8);
}
{
Group* o = new Group(10, 60, 370, 120, _("Workspace names:"));
o->box(ENGRAVED_BOX);
o->align(ALIGN_TOP|ALIGN_LEFT);
o->begin();
{
Input* o = new Input(50, 5, 115, 20, _("WS 1:"));
o->deactivate();
workspaces[0] = o; ;
}
{
Input* o = new Input(50, 35, 115, 20, _("WS 2:"));
o->deactivate();
workspaces[1] = o; ;
}
{
Input* o = new Input(50, 65, 115, 20, _("WS 3:"));
o->deactivate();
workspaces[2] = o; ;
}
{
Input* o = new Input(50, 95, 115, 20, _("WS 4:"));
o->deactivate();
workspaces[3] = o; ;
}
{
Input* o = new Input(250, 5, 115, 20, _("WS 5:"));
o->deactivate();
workspaces[4] = o; ;
}
{
Input* o = new Input(250, 35, 115, 20, _("WS 6:"));
o->deactivate();
workspaces[5] = o; ;
}
{
Input* o = new Input(250, 65, 115, 20, _("WS 7:"));
o->deactivate();
workspaces[6] = o; ;
}
{
Input* o = new Input(250, 95, 115, 20, _("WS 8:"));
o->deactivate();
workspaces[7] = o; ;
}
o->end();
}
o->end();
}
{
Group* o = new Group(0, 25, 385, 190, _("Handlers"));
o->hide();
o->begin();
{
Group* o = new Group(10, 20, 365, 110, _("Handlers programs"));
o->box(ENGRAVED_BOX);
o->align(ALIGN_TOP|ALIGN_LEFT);
o->begin();
{
Input* o = browserProgram = new Input(10, 20, 245, 25, _("Internet browser:"));
o->align(ALIGN_TOP|ALIGN_LEFT);
}
{
Button* o = new Button(265, 20, 90, 25, _("&Browse..."));
o->callback((Callback*)cb_Browse1);
}
{
Input* o = terminalProgram = new Input(10, 65, 245, 25, _("Terminal:"));
o->align(ALIGN_TOP|ALIGN_LEFT);
}
{
Button* o = new Button(265, 65, 90, 25, _("Br&owse..."));
o->callback((Callback*)cb_Br1);
}
o->end();
}
o->end();
}
o->end();
} // TabGroup
o->end();
}
read_config();
update_workspaces();
w->show(argc, argv);
return run();
}