mirror of
https://github.com/edeproject/ede.git
synced 2023-08-10 21:13:03 +03:00
238 lines
5.4 KiB
C++
238 lines
5.4 KiB
C++
|
// EDialog - copyleft (c) Vedran Ljubovic 2005
|
||
|
// This program is licenced under GNU General Public License v2 or greater
|
||
|
|
||
|
|
||
|
#include <fltk/ask.h>
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
using namespace fltk;
|
||
|
|
||
|
|
||
|
// --- compat. modes enum
|
||
|
|
||
|
enum {
|
||
|
KDIALOGMODE = 0
|
||
|
};
|
||
|
|
||
|
|
||
|
// Common functions
|
||
|
|
||
|
void errormsg(char* msg) {
|
||
|
fprintf (stderr, "edialog: %s\n", msg);
|
||
|
exit(1);
|
||
|
}
|
||
|
|
||
|
|
||
|
void showhelp() {
|
||
|
printf ("edialog - Show dialogs using FLTK2\n");
|
||
|
printf ("Copyright (c) Vedran Ljubovic 2005\n");
|
||
|
printf ("This program is licensed under GNU General Public License v2 or greater\n\n");
|
||
|
printf ("Displays a dialog box. Return value corresponds to button pressed (e.g 0 = Ok, 1 = Cancel...)\n\n");
|
||
|
printf ("Options:\n");
|
||
|
printf (" --kdialog - kdialog compatibility mode (default)\n");
|
||
|
printf (" (see kdialog --help for list)\n");
|
||
|
exit(0);
|
||
|
}
|
||
|
|
||
|
|
||
|
// Functions for dialogs
|
||
|
|
||
|
void YesNo(char* param) {
|
||
|
if (param[0] == '\0') errormsg ("Required parameter missing.");
|
||
|
exit(ask(param));
|
||
|
}
|
||
|
|
||
|
void YesNoCancel(char* param) {
|
||
|
if (param[0] == '\0') errormsg ("Required parameter missing.");
|
||
|
exit(choice(param,yes,no,cancel));
|
||
|
}
|
||
|
|
||
|
void WarningYesNo(char* param) {
|
||
|
if (param[0] == '\0') errormsg ("Required parameter missing.");
|
||
|
exit(choice_alert(param,yes,no,""));
|
||
|
}
|
||
|
|
||
|
void WarningContinueCancel(char* param) {
|
||
|
if (param[0] == '\0') errormsg ("Required parameter missing.");
|
||
|
exit(choice_alert(param,"Continue",cancel,0));
|
||
|
}
|
||
|
|
||
|
void WarningYesNoCancel(char* param) {
|
||
|
if (param[0] == '\0') errormsg ("Required parameter missing.");
|
||
|
exit(choice_alert(param,yes,no,cancel));
|
||
|
}
|
||
|
|
||
|
void Sorry(char* param) {
|
||
|
if (param[0] == '\0') errormsg ("Required parameter missing.");
|
||
|
alert(param);
|
||
|
exit(0);
|
||
|
}
|
||
|
|
||
|
void Error(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
// Displays a red X and plays "error" sound
|
||
|
|
||
|
// if (param[0] == '\0') errormsg ("Required parameter missing.");
|
||
|
// alert(param);
|
||
|
// exit(0);
|
||
|
}
|
||
|
|
||
|
void MsgBox(char* param) {
|
||
|
if (param[0] == '\0') errormsg ("Required parameter missing.");
|
||
|
message(param);
|
||
|
exit(0);
|
||
|
}
|
||
|
|
||
|
void InputBox(char* param) {
|
||
|
if (param[0] == '\0') errormsg ("Required parameter missing.");
|
||
|
char *title = strtok(param," ");
|
||
|
char *defval = strtok(NULL," ");
|
||
|
printf ("%s\n",input(title,defval));
|
||
|
exit(0);
|
||
|
}
|
||
|
|
||
|
void Password(char* param) {
|
||
|
// NOTE: kdialog doesn't support default value for password
|
||
|
// possibly for security reasons?
|
||
|
if (param[0] == '\0') errormsg ("Required parameter missing.");
|
||
|
char *title = strtok(param," ");
|
||
|
char *defval = strtok(NULL," ");
|
||
|
printf ("%s\n",password(title,defval));
|
||
|
exit(0);
|
||
|
}
|
||
|
|
||
|
void TextBox(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
void ComboBox(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
void Menu(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
void CheckList(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
void RadioList(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
void PassivePopup(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
void GetOpenFilename(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
void GetSaveFilename(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
void GetExistingDirectory(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
void GetOpenUrl(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
void GetSaveUrl(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
void GetIcon(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
void ProgressBar(char* param) {
|
||
|
errormsg("Not implemented yet.");
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// ----------- These are charts for various compatibility modes
|
||
|
|
||
|
struct paramslist {
|
||
|
char* option;
|
||
|
void (*func)(char*);
|
||
|
};
|
||
|
|
||
|
// kdialog - KDE dialog
|
||
|
paramslist kdialogopts[] = {
|
||
|
{"--yesno", YesNo},
|
||
|
{"--yesnocancel", YesNoCancel},
|
||
|
{"--warningyesno", WarningYesNo},
|
||
|
{"--warningcontinuecancel", WarningContinueCancel},
|
||
|
{"--warningyesnocancel", WarningYesNoCancel},
|
||
|
{"--sorry", Sorry},
|
||
|
{"--error", Error},
|
||
|
{"--msgbox", MsgBox},
|
||
|
{"--inputbox", InputBox},
|
||
|
{"--password", Password},
|
||
|
{"--textbox", TextBox},
|
||
|
{"--combobox", ComboBox},
|
||
|
{"--menu", Menu},
|
||
|
{"--checklist", CheckList},
|
||
|
{"--radiolist", RadioList},
|
||
|
{"--passivepopup", PassivePopup},
|
||
|
{"--getopenfilename", GetOpenFilename},
|
||
|
{"--getsavefilename", GetSaveFilename},
|
||
|
{"--getexistingdirectory", GetExistingDirectory},
|
||
|
{"--getopenurl", GetOpenUrl},
|
||
|
{"--getsaveurl", GetSaveUrl},
|
||
|
{"--geticon", GetIcon},
|
||
|
{"--progressbar", ProgressBar},
|
||
|
{""}
|
||
|
};
|
||
|
|
||
|
|
||
|
// parse command line parameters
|
||
|
int main (int argc, char **argv) {
|
||
|
int compat_mode = KDIALOGMODE;
|
||
|
bool param_recognized[100];
|
||
|
for (int i=0;i<100;i++) param_recognized[i]=false;
|
||
|
|
||
|
// Switches and modifiers
|
||
|
for (int i=1; i<argc; i++) {
|
||
|
if (strcmp(argv[i],"--kdialog") == 0) {
|
||
|
compat_mode = KDIALOGMODE;
|
||
|
param_recognized[i]=true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Dialogs - only one dialog can be shown, so as soon as
|
||
|
// we recognize parameter, we exit()
|
||
|
paramslist* ptr;
|
||
|
if (compat_mode == KDIALOGMODE) ptr = kdialogopts;
|
||
|
for (int i=1; i<argc; i++) {
|
||
|
while (ptr->option[0] != '\0') {
|
||
|
if (strcmp(argv[i],ptr->option) == 0) {
|
||
|
char *params = strdup("");
|
||
|
i++;
|
||
|
while ((i<argc) && (argv[i][0] != '-') && (argv[i][1] != '-')) {
|
||
|
params = (char*) realloc(params, strlen(params)+strlen(argv[i])+2);
|
||
|
params = strcat(params,argv[i++]);
|
||
|
params = strcat(params," ");
|
||
|
}
|
||
|
ptr->func(params);
|
||
|
}
|
||
|
ptr++;
|
||
|
}
|
||
|
// function should exit()
|
||
|
// so we can get here only if parameter isn't recognized
|
||
|
if (param_recognized[i] == false) {
|
||
|
showhelp();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// No parameters passed or just modifiers
|
||
|
showhelp();
|
||
|
}
|