forked from enlightenment/equate
PROTO/equate: Cleanup code, and add bracket support.
SVN revision: 63874
This commit is contained in:
parent
83ed76b877
commit
7b462f7c57
|
@ -18,7 +18,13 @@ all: $(EDCS)
|
||||||
.edc.edj:
|
.edc.edj:
|
||||||
$(EDJE_CC) $(EDJE_FLAGS) $< $@
|
$(EDJE_CC) $(EDJE_FLAGS) $< $@
|
||||||
|
|
||||||
EXTRA_DIST = $(EDCS)
|
desktopdir = $(datadir)/applications
|
||||||
|
desktop_DATA = equate.desktop
|
||||||
|
|
||||||
|
icondir = $(datadir)/icons
|
||||||
|
icon_DATA = equate.png
|
||||||
|
|
||||||
|
EXTRA_DIST = $(EDCS) equate.png equate.desktop
|
||||||
|
|
||||||
clean-local:
|
clean-local:
|
||||||
rm -f $(EDJS)
|
rm -f $(EDJS)
|
||||||
|
|
|
@ -0,0 +1,11 @@
|
||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Equate
|
||||||
|
GenericName=Calculator
|
||||||
|
Comment=EFL Calculator
|
||||||
|
Icon=equate
|
||||||
|
TryExec=equate
|
||||||
|
Exec=equate
|
||||||
|
Terminal=false
|
||||||
|
Categories=X-ENLIGHTENMENT;Utility;
|
||||||
|
StartupWMClass=equate
|
|
@ -52,7 +52,7 @@ group { name: "button/"pname; \
|
||||||
/* color3: 0 0 0 30; */ \
|
/* color3: 0 0 0 30; */ \
|
||||||
text { \
|
text { \
|
||||||
font: "Sans"; \
|
font: "Sans"; \
|
||||||
size: 20; \
|
size: 25; \
|
||||||
min: 1 1; \
|
min: 1 1; \
|
||||||
align: 0.5 0.5; \
|
align: 0.5 0.5; \
|
||||||
text_class: "button"; \
|
text_class: "button"; \
|
||||||
|
@ -166,20 +166,20 @@ collections {
|
||||||
BUTTON("four", "4", "NUM_4");
|
BUTTON("four", "4", "NUM_4");
|
||||||
BUTTON("five", "5", "NUM_5");
|
BUTTON("five", "5", "NUM_5");
|
||||||
BUTTON("six", "6", "NUM_6");
|
BUTTON("six", "6", "NUM_6");
|
||||||
//BUTTON("nine", "9", "OP_DIV");
|
BUTTON("obrak", "(", "OP_OBRAK");
|
||||||
|
|
||||||
BUTTON("one", "1", "NUM_1");
|
BUTTON("one", "1", "NUM_1");
|
||||||
BUTTON("two", "2", "NUM_2");
|
BUTTON("two", "2", "NUM_2");
|
||||||
BUTTON("three", "3", "NUM_3");
|
BUTTON("three", "3", "NUM_3");
|
||||||
BUTTON("equal", "=", "OP_EQU");
|
BUTTON("cbrak", ")", "OP_CBRAK");
|
||||||
|
|
||||||
BUTTON("zero", "0", "NUM_0");
|
BUTTON("zero", "0", "NUM_0");
|
||||||
BUTTON("point", ".", "OP_DEC");
|
BUTTON("point", ".", "OP_DEC");
|
||||||
|
BUTTON("equal", "=", "OP_EQU");
|
||||||
|
|
||||||
group {
|
group {
|
||||||
name: "Main";
|
name: "Main";
|
||||||
min: 200 296;
|
|
||||||
max: 200 296;
|
|
||||||
parts {
|
parts {
|
||||||
part {
|
part {
|
||||||
name: "bg";
|
name: "bg";
|
||||||
|
@ -217,7 +217,7 @@ collections {
|
||||||
{
|
{
|
||||||
text: "";
|
text: "";
|
||||||
font: "Sans";
|
font: "Sans";
|
||||||
size: 25;
|
size: 30;
|
||||||
//fit: 0 0;
|
//fit: 0 0;
|
||||||
min: 1 1;
|
min: 1 1;
|
||||||
align: 1.0 0.5;
|
align: 1.0 0.5;
|
||||||
|
@ -230,7 +230,7 @@ collections {
|
||||||
type : TABLE;
|
type : TABLE;
|
||||||
description {
|
description {
|
||||||
state : "default" 0.0;
|
state : "default" 0.0;
|
||||||
fixed: 1 1;
|
fixed: 0 1;
|
||||||
rel1.to: "EquateAnswer";
|
rel1.to: "EquateAnswer";
|
||||||
rel1.relative: 0 1;
|
rel1.relative: 0 1;
|
||||||
table {
|
table {
|
||||||
|
@ -253,14 +253,16 @@ collections {
|
||||||
BUTTON_TABLE_ITEM("button/four", 0, 2, 1, 1);
|
BUTTON_TABLE_ITEM("button/four", 0, 2, 1, 1);
|
||||||
BUTTON_TABLE_ITEM("button/five", 1, 2, 1, 1);
|
BUTTON_TABLE_ITEM("button/five", 1, 2, 1, 1);
|
||||||
BUTTON_TABLE_ITEM("button/six", 2, 2, 1, 1);
|
BUTTON_TABLE_ITEM("button/six", 2, 2, 1, 1);
|
||||||
BUTTON_TABLE_ITEM("button/equal", 3, 2, 1, 3);
|
BUTTON_TABLE_ITEM("button/obrak", 3, 2, 1, 1);
|
||||||
|
|
||||||
BUTTON_TABLE_ITEM("button/one", 0, 3, 1, 1);
|
BUTTON_TABLE_ITEM("button/one", 0, 3, 1, 1);
|
||||||
BUTTON_TABLE_ITEM("button/two", 1, 3, 1, 1);
|
BUTTON_TABLE_ITEM("button/two", 1, 3, 1, 1);
|
||||||
BUTTON_TABLE_ITEM("button/three", 2, 3, 1, 1);
|
BUTTON_TABLE_ITEM("button/three", 2, 3, 1, 1);
|
||||||
|
BUTTON_TABLE_ITEM("button/cbrak", 3, 3, 1, 1);
|
||||||
|
|
||||||
BUTTON_TABLE_ITEM("button/zero", 0, 4, 2, 1);
|
BUTTON_TABLE_ITEM("button/zero", 0, 4, 1, 1);
|
||||||
BUTTON_TABLE_ITEM("button/point", 2, 4, 1, 1);
|
BUTTON_TABLE_ITEM("button/point", 1, 4, 1, 1);
|
||||||
|
BUTTON_TABLE_ITEM("button/equal", 2, 4, 2, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
68
src/Equate.h
68
src/Equate.h
|
@ -7,50 +7,42 @@
|
||||||
fprintf(stderr,fmt, args); \
|
fprintf(stderr,fmt, args); \
|
||||||
} while(0)
|
} while(0)
|
||||||
|
|
||||||
#include "calc.h"
|
|
||||||
|
|
||||||
#include <Elementary.h>
|
#include <Elementary.h>
|
||||||
#include <stdlib.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include "calc.h"
|
||||||
|
|
||||||
#define BUFLEN 100
|
#define BUFLEN 100
|
||||||
|
|
||||||
/* structures */
|
#define EQ_EXIT 1
|
||||||
typedef struct
|
#define OP_CLR 2
|
||||||
{
|
#define OP_DIV 3
|
||||||
Ecore_Evas *ee;
|
#define OP_MUT 4
|
||||||
Evas_Object *edje;
|
#define OP_ADD 5
|
||||||
} Gui;
|
#define OP_SUB 6
|
||||||
|
#define OP_EQU 7
|
||||||
|
#define OP_DEC 8
|
||||||
|
#define OP_SIN 9
|
||||||
|
#define OP_COS 10
|
||||||
|
#define OP_TAN 11
|
||||||
|
#define OP_ROOT 12
|
||||||
|
#define OP_POW 13
|
||||||
|
#define OP_LOG 14
|
||||||
|
#define OP_LN 15
|
||||||
|
#define OP_EXP 16
|
||||||
|
#define OP_OBRAK 17
|
||||||
|
#define OP_CBRAK 18
|
||||||
|
|
||||||
typedef enum
|
#define NUM_0 20
|
||||||
{
|
#define NUM_1 21
|
||||||
DEFAULT,
|
#define NUM_2 22
|
||||||
BASIC,
|
#define NUM_3 23
|
||||||
SCI,
|
#define NUM_4 24
|
||||||
EDJE
|
#define NUM_5 25
|
||||||
} Mode;
|
#define NUM_6 26
|
||||||
|
#define NUM_7 27
|
||||||
|
#define NUM_8 28
|
||||||
|
#define NUM_9 29
|
||||||
|
#define NUM_PI 30
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
Mode mode;
|
|
||||||
char *theme;
|
|
||||||
} Conf;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
Gui gui;
|
|
||||||
Conf conf;
|
|
||||||
} Equate;
|
|
||||||
|
|
||||||
void equate_init(Equate * equate);
|
|
||||||
void equate_quit();
|
|
||||||
|
|
||||||
#include "gui.h"
|
|
||||||
|
|
|
@ -5,19 +5,17 @@ AM_CPPFLAGS = \
|
||||||
-I. \
|
-I. \
|
||||||
-I$(top_srcdir)/lib \
|
-I$(top_srcdir)/lib \
|
||||||
-I$(top_builddir)/lib \
|
-I$(top_builddir)/lib \
|
||||||
-DPACKAGE_PKGDATA_DIR=\"$(pkgdatadir)\" \
|
-DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \
|
||||||
|
-DPACKAGE_BIN_DIR=\"$(pkgbindir)\" \
|
||||||
@EQUATE_CFLAGS@
|
@EQUATE_CFLAGS@
|
||||||
|
|
||||||
bin_PROGRAMS = equate
|
bin_PROGRAMS = equate
|
||||||
|
|
||||||
equate_SOURCES = \
|
equate_SOURCES = \
|
||||||
gui.c \
|
|
||||||
calc_parse.c \
|
calc_parse.c \
|
||||||
edje.c \
|
|
||||||
main.c \
|
main.c \
|
||||||
Equate.h \
|
Equate.h \
|
||||||
calc.h \
|
calc.h
|
||||||
gui.h
|
|
||||||
|
|
||||||
equate_LDADD = @EQUATE_LIBS@
|
equate_LDADD = @EQUATE_LIBS@
|
||||||
|
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
void equate_clear(void);
|
void equate_clear(void);
|
||||||
int equate_append(char *str);
|
int equate_append(char *str);
|
||||||
double equate_eval(void);
|
double equate_eval(void);
|
||||||
|
const char *equate_string_get(void);
|
||||||
|
|
||||||
/* Fonctions type. */
|
/* Fonctions type. */
|
||||||
typedef double (*func_t) (double);
|
typedef double (*func_t) (double);
|
||||||
|
|
|
@ -75,6 +75,7 @@
|
||||||
#line 1 "calc.y"
|
#line 1 "calc.y"
|
||||||
|
|
||||||
#include <math.h> /* For math functions, cos(), sin(), etc. */
|
#include <math.h> /* For math functions, cos(), sin(), etc. */
|
||||||
|
#include "calc.h"
|
||||||
#include "Equate.h"
|
#include "Equate.h"
|
||||||
|
|
||||||
#define YYERROR_VERBOSE
|
#define YYERROR_VERBOSE
|
||||||
|
|
299
src/edje.c
299
src/edje.c
|
@ -1,299 +0,0 @@
|
||||||
#include "Equate.h"
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Edjification by atmos and digitalfallout
|
|
||||||
* edje_signals.[ch] handle the edje part of equate. Translate signals
|
|
||||||
* our edje emits into the backend. All the operators, functions, and
|
|
||||||
* input values must have a #define'd numeric constant so it can be
|
|
||||||
* evaluated in _equate_interp.
|
|
||||||
*
|
|
||||||
* Jan 10 DigitalFallout
|
|
||||||
* Added theme path detection
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define EQ_EXIT 1
|
|
||||||
#define OP_CLR 2
|
|
||||||
#define OP_DIV 3
|
|
||||||
#define OP_MUT 4
|
|
||||||
#define OP_ADD 5
|
|
||||||
#define OP_SUB 6
|
|
||||||
#define OP_EQU 7
|
|
||||||
#define OP_DEC 8
|
|
||||||
#define OP_SIN 9
|
|
||||||
#define OP_COS 10
|
|
||||||
#define OP_TAN 11
|
|
||||||
#define OP_ROOT 12
|
|
||||||
#define OP_POW 13
|
|
||||||
#define OP_LOG 14
|
|
||||||
#define OP_LN 15
|
|
||||||
#define OP_EXP 16
|
|
||||||
|
|
||||||
#define NUM_0 20
|
|
||||||
#define NUM_1 21
|
|
||||||
#define NUM_2 22
|
|
||||||
#define NUM_3 23
|
|
||||||
#define NUM_4 24
|
|
||||||
#define NUM_5 25
|
|
||||||
#define NUM_6 26
|
|
||||||
#define NUM_7 27
|
|
||||||
#define NUM_8 28
|
|
||||||
#define NUM_9 29
|
|
||||||
#define NUM_PI 30
|
|
||||||
|
|
||||||
/**
|
|
||||||
* defined in calc.tab.c
|
|
||||||
*/
|
|
||||||
extern void equate_clear(void);
|
|
||||||
extern double equate_eval(void);
|
|
||||||
extern int equate_append(char *str);
|
|
||||||
extern const char *equate_string_get(void);
|
|
||||||
|
|
||||||
Evas_Object *equate_edje_root;
|
|
||||||
Ecore_Evas *equate_edje_window;
|
|
||||||
int equate_edje_inited;
|
|
||||||
|
|
||||||
static void
|
|
||||||
_no_filter_cb(void *data, Evas_Object * o, const char *emission, const
|
|
||||||
char *source)
|
|
||||||
{
|
|
||||||
|
|
||||||
//printf("emission: %s\t source: %s\n", emission, source);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Interpret all of our different signals, and do things !
|
|
||||||
*/
|
|
||||||
static void
|
|
||||||
_equate_interp(void *data, Evas_Object * o, const char *emission, const
|
|
||||||
char *source)
|
|
||||||
{
|
|
||||||
int val = 0;
|
|
||||||
|
|
||||||
if (data)
|
|
||||||
{
|
|
||||||
double result;
|
|
||||||
char buf[BUFLEN];
|
|
||||||
|
|
||||||
val = (int) data;
|
|
||||||
switch (val)
|
|
||||||
{
|
|
||||||
case EQ_EXIT:
|
|
||||||
ecore_main_loop_quit();
|
|
||||||
break;
|
|
||||||
case OP_CLR:
|
|
||||||
equate_clear();
|
|
||||||
break;
|
|
||||||
case OP_DIV:
|
|
||||||
equate_append("/");
|
|
||||||
break;
|
|
||||||
case OP_MUT:
|
|
||||||
equate_append("*");
|
|
||||||
break;
|
|
||||||
case OP_ADD:
|
|
||||||
equate_append("+");
|
|
||||||
break;
|
|
||||||
case OP_SUB:
|
|
||||||
equate_append("-");
|
|
||||||
break;
|
|
||||||
case OP_EQU:
|
|
||||||
snprintf(buf, BUFLEN, "%.10g", equate_eval());
|
|
||||||
edje_object_part_text_set(o, "EquateAnswer", buf);
|
|
||||||
return;
|
|
||||||
break;
|
|
||||||
case OP_DEC:
|
|
||||||
equate_append(".");
|
|
||||||
break;
|
|
||||||
case OP_SIN:
|
|
||||||
equate_append("sin");
|
|
||||||
break;
|
|
||||||
case OP_COS:
|
|
||||||
equate_append("cos");
|
|
||||||
break;
|
|
||||||
case OP_TAN:
|
|
||||||
equate_append("tan");
|
|
||||||
break;
|
|
||||||
case OP_ROOT:
|
|
||||||
equate_append("sqrt");
|
|
||||||
break;
|
|
||||||
case OP_POW:
|
|
||||||
equate_append("^");
|
|
||||||
break;
|
|
||||||
case OP_LOG:
|
|
||||||
equate_append("log");
|
|
||||||
break;
|
|
||||||
case OP_LN:
|
|
||||||
equate_append("ln");
|
|
||||||
break;
|
|
||||||
case OP_EXP:
|
|
||||||
equate_append("exp");
|
|
||||||
break;
|
|
||||||
case NUM_0:
|
|
||||||
equate_append("0");
|
|
||||||
break;
|
|
||||||
case NUM_1:
|
|
||||||
equate_append("1");
|
|
||||||
break;
|
|
||||||
case NUM_2:
|
|
||||||
equate_append("2");
|
|
||||||
break;
|
|
||||||
case NUM_3:
|
|
||||||
equate_append("3");
|
|
||||||
break;
|
|
||||||
case NUM_4:
|
|
||||||
equate_append("4");
|
|
||||||
break;
|
|
||||||
case NUM_5:
|
|
||||||
equate_append("5");
|
|
||||||
break;
|
|
||||||
case NUM_6:
|
|
||||||
equate_append("6");
|
|
||||||
break;
|
|
||||||
case NUM_7:
|
|
||||||
equate_append("7");
|
|
||||||
break;
|
|
||||||
case NUM_8:
|
|
||||||
equate_append("8");
|
|
||||||
break;
|
|
||||||
case NUM_9:
|
|
||||||
equate_append("9");
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
E(1, "Unknown edje signal operator %d", val);
|
|
||||||
break;
|
|
||||||
/* etc */
|
|
||||||
}
|
|
||||||
edje_object_part_text_set(o, "EquateAnswer", equate_string_get());
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* equate_edje_callback_define - setup the edje signal interceptions
|
|
||||||
* @o - the object we're assigning these callbacks to
|
|
||||||
*/
|
|
||||||
void
|
|
||||||
equate_edje_callback_define(Evas_Object * o)
|
|
||||||
{
|
|
||||||
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"*", "*", _no_filter_cb,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
/** Equate Application Callbacks **/
|
|
||||||
/* EQ_EXIT - Quit Equate */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"EQ_EXIT", "*", _equate_interp,
|
|
||||||
(void *) EQ_EXIT);
|
|
||||||
|
|
||||||
/** Equate Operation Callbacks **/
|
|
||||||
/* OP_CLR - Clear Display */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_CLR", "*", _equate_interp,
|
|
||||||
(void *) OP_CLR);
|
|
||||||
|
|
||||||
/* OP_DIV - Division Operator */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_DIV", "*", _equate_interp,
|
|
||||||
(void *) OP_DIV);
|
|
||||||
|
|
||||||
/* OP_MUT - Mutplication Operator */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_MUT", "*", _equate_interp,
|
|
||||||
(void *) OP_MUT);
|
|
||||||
|
|
||||||
/* OP_ADD - Addition Operator */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_ADD", "*", _equate_interp,
|
|
||||||
(void *) OP_ADD);
|
|
||||||
|
|
||||||
/* OP_SUB - Subtraction Operator */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_SUB", "*", _equate_interp,
|
|
||||||
(void *) OP_SUB);
|
|
||||||
|
|
||||||
/* OP_EQU - Equals Operator */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_EQU", "*", _equate_interp,
|
|
||||||
(void *) OP_EQU);
|
|
||||||
|
|
||||||
/* OP_DEC - Decimal Operator */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_DEC", "*", _equate_interp,
|
|
||||||
(void *) OP_DEC);
|
|
||||||
/* OP_SIN - Sin of x in degrees */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_SIN", "*", _equate_interp,
|
|
||||||
(void *) OP_SIN);
|
|
||||||
/* OP_COS - Cos of x in degree */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_COS", "*", _equate_interp,
|
|
||||||
(void *) OP_COS);
|
|
||||||
/* OP_TAN - Tan of x in degrees */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_TAN", "*", _equate_interp,
|
|
||||||
(void *) OP_TAN);
|
|
||||||
/* OP_ROOT - The square root of x */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_ROOT", "*", _equate_interp,
|
|
||||||
(void *) OP_ROOT);
|
|
||||||
/* OP_POW - Raise x to the y power */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_POW", "*", _equate_interp,
|
|
||||||
(void *) OP_POW);
|
|
||||||
/* OP_LOG - Logarithm */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_LOG", "*", _equate_interp,
|
|
||||||
(void *) OP_LOG);
|
|
||||||
/* OP_LN - the natural logarithm */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_LN", "*", _equate_interp, (void *) OP_LN);
|
|
||||||
/* OP_EXP - e to the x */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"OP_EXP", "*", _equate_interp,
|
|
||||||
(void *) OP_EXP);
|
|
||||||
|
|
||||||
/** Equate Number Callbacks **/
|
|
||||||
/* NUM_0 - Zero */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"NUM_0", "*", _equate_interp, (void *) NUM_0);
|
|
||||||
|
|
||||||
/* NUM_1 - One */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"NUM_1", "*", _equate_interp, (void *) NUM_1);
|
|
||||||
|
|
||||||
/* NUM_2 - Two */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"NUM_2", "*", _equate_interp, (void *) NUM_2);
|
|
||||||
|
|
||||||
/* NUM_3 - Three */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"NUM_3", "*", _equate_interp, (void *) NUM_3);
|
|
||||||
|
|
||||||
/* NUM_4 - Four */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"NUM_4", "*", _equate_interp, (void *) NUM_4);
|
|
||||||
|
|
||||||
/* NUM_5 - Five */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"NUM_5", "*", _equate_interp, (void *) NUM_5);
|
|
||||||
|
|
||||||
/* NUM_6 - Six */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"NUM_6", "*", _equate_interp, (void *) NUM_6);
|
|
||||||
|
|
||||||
/* NUM_7 - Seven */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"NUM_7", "*", _equate_interp, (void *) NUM_7);
|
|
||||||
|
|
||||||
/* NUM_8 - Eight */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"NUM_8", "*", _equate_interp, (void *) NUM_8);
|
|
||||||
|
|
||||||
/* NUM_9 - Nine */
|
|
||||||
edje_object_signal_callback_add(o,
|
|
||||||
"NUM_9", "*", _equate_interp, (void *) NUM_9);
|
|
||||||
/* NUM_PI - 3.14159 */
|
|
||||||
edje_object_signal_callback_add(o, "NUM_PI", "*", _equate_interp,
|
|
||||||
(void *) NUM_PI);
|
|
||||||
}
|
|
43
src/gui.c
43
src/gui.c
|
@ -1,43 +0,0 @@
|
||||||
#include "Equate.h"
|
|
||||||
|
|
||||||
int inited = 0;
|
|
||||||
|
|
||||||
Evas_Object *win;
|
|
||||||
Evas_Object *ly;
|
|
||||||
|
|
||||||
void
|
|
||||||
equate_init_gui(Equate * equate, int argc, char **argv)
|
|
||||||
{
|
|
||||||
char buf[1024];
|
|
||||||
char *pkgdatadir;
|
|
||||||
|
|
||||||
if (inited == 1)
|
|
||||||
return;
|
|
||||||
if (equate)
|
|
||||||
{
|
|
||||||
win = elm_win_add(NULL, "equate", ELM_WIN_BASIC);
|
|
||||||
elm_win_title_set(win, "Equate");
|
|
||||||
elm_win_autodel_set(win, EINA_TRUE);
|
|
||||||
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
|
|
||||||
|
|
||||||
|
|
||||||
ly = elm_layout_add(win);
|
|
||||||
pkgdatadir = getenv("EQUATE_PKGDATA_DIR");
|
|
||||||
if (!pkgdatadir)
|
|
||||||
pkgdatadir = PACKAGE_PKGDATA_DIR;
|
|
||||||
snprintf(buf, sizeof(buf), "%s/themes/equate.edj", pkgdatadir);
|
|
||||||
elm_layout_file_set(ly, buf, "Main");
|
|
||||||
evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
|
||||||
evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
|
||||||
elm_win_resize_object_add(win, ly);
|
|
||||||
evas_object_show(ly);
|
|
||||||
|
|
||||||
evas_object_show(win);
|
|
||||||
evas_object_resize(win, 200, 296);
|
|
||||||
|
|
||||||
equate_edje_callback_define(elm_layout_edje_get(ly));
|
|
||||||
|
|
||||||
inited = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
12
src/gui.h
12
src/gui.h
|
@ -1,12 +0,0 @@
|
||||||
#ifndef _EQUATE_GUI_H
|
|
||||||
#define _EQUATE_GUI_H
|
|
||||||
|
|
||||||
/* needed 'cos generated h files suck */
|
|
||||||
double yyresult(void);
|
|
||||||
|
|
||||||
void update_display(char *text);
|
|
||||||
|
|
||||||
void equate_gui_init(Equate * equate, int argc, char **arvg);
|
|
||||||
void equate_gui_quit(void);
|
|
||||||
void equate_gui_update(Equate * equate);
|
|
||||||
#endif
|
|
234
src/main.c
234
src/main.c
|
@ -1,22 +1,236 @@
|
||||||
|
#include <Elementary.h>
|
||||||
|
#ifndef ELM_LIB_QUICKLAUNCH
|
||||||
|
|
||||||
#include "Equate.h"
|
#include "Equate.h"
|
||||||
|
#include "calc.h"
|
||||||
|
|
||||||
Equate equate;
|
static Evas_Object *win;
|
||||||
|
static Evas_Object *ly;
|
||||||
|
|
||||||
int
|
static void
|
||||||
main(int argc, char *argv[], char *env[])
|
_signal_cb(void *data, Evas_Object * o, const char *emission, const
|
||||||
|
char *source)
|
||||||
{
|
{
|
||||||
int nextarg = 1, parse_ret, found;
|
int val = 0;
|
||||||
char *arg;
|
|
||||||
|
|
||||||
elm_init(argc, argv);
|
if (data)
|
||||||
|
{
|
||||||
|
double result;
|
||||||
|
char buf[BUFLEN];
|
||||||
|
|
||||||
|
val = (int) data;
|
||||||
|
switch (val)
|
||||||
|
{
|
||||||
|
case EQ_EXIT:
|
||||||
|
elm_exit();
|
||||||
|
break;
|
||||||
|
case OP_CLR:
|
||||||
|
equate_clear();
|
||||||
|
break;
|
||||||
|
case OP_DIV:
|
||||||
|
equate_append("/");
|
||||||
|
break;
|
||||||
|
case OP_MUT:
|
||||||
|
equate_append("*");
|
||||||
|
break;
|
||||||
|
case OP_ADD:
|
||||||
|
equate_append("+");
|
||||||
|
break;
|
||||||
|
case OP_SUB:
|
||||||
|
equate_append("-");
|
||||||
|
break;
|
||||||
|
case OP_EQU:
|
||||||
|
snprintf(buf, BUFLEN, "%.10g", equate_eval());
|
||||||
|
edje_object_part_text_set(o, "EquateAnswer", buf);
|
||||||
|
return;
|
||||||
|
break;
|
||||||
|
case OP_DEC:
|
||||||
|
equate_append(".");
|
||||||
|
break;
|
||||||
|
case OP_OBRAK:
|
||||||
|
equate_append("(");
|
||||||
|
break;
|
||||||
|
case OP_CBRAK:
|
||||||
|
equate_append(")");
|
||||||
|
break;
|
||||||
|
case OP_SIN:
|
||||||
|
equate_append("sin");
|
||||||
|
break;
|
||||||
|
case OP_COS:
|
||||||
|
equate_append("cos");
|
||||||
|
break;
|
||||||
|
case OP_TAN:
|
||||||
|
equate_append("tan");
|
||||||
|
break;
|
||||||
|
case OP_ROOT:
|
||||||
|
equate_append("sqrt");
|
||||||
|
break;
|
||||||
|
case OP_POW:
|
||||||
|
equate_append("^");
|
||||||
|
break;
|
||||||
|
case OP_LOG:
|
||||||
|
equate_append("log");
|
||||||
|
break;
|
||||||
|
case OP_LN:
|
||||||
|
equate_append("ln");
|
||||||
|
break;
|
||||||
|
case OP_EXP:
|
||||||
|
equate_append("exp");
|
||||||
|
break;
|
||||||
|
case NUM_0:
|
||||||
|
equate_append("0");
|
||||||
|
break;
|
||||||
|
case NUM_1:
|
||||||
|
equate_append("1");
|
||||||
|
break;
|
||||||
|
case NUM_2:
|
||||||
|
equate_append("2");
|
||||||
|
break;
|
||||||
|
case NUM_3:
|
||||||
|
equate_append("3");
|
||||||
|
break;
|
||||||
|
case NUM_4:
|
||||||
|
equate_append("4");
|
||||||
|
break;
|
||||||
|
case NUM_5:
|
||||||
|
equate_append("5");
|
||||||
|
break;
|
||||||
|
case NUM_6:
|
||||||
|
equate_append("6");
|
||||||
|
break;
|
||||||
|
case NUM_7:
|
||||||
|
equate_append("7");
|
||||||
|
break;
|
||||||
|
case NUM_8:
|
||||||
|
equate_append("8");
|
||||||
|
break;
|
||||||
|
case NUM_9:
|
||||||
|
equate_append("9");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
E(1, "Unknown edje signal operator %d", val);
|
||||||
|
break;
|
||||||
|
/* etc */
|
||||||
|
}
|
||||||
|
edje_object_part_text_set(o, "EquateAnswer", equate_string_get());
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static void
|
||||||
|
_edje_callbacks_define(Evas_Object * o)
|
||||||
|
{
|
||||||
|
/** Equate Application Callbacks **/
|
||||||
|
/* EQ_EXIT - Quit Equate */
|
||||||
|
edje_object_signal_callback_add(o, "EQ_EXIT", "*", _signal_cb,
|
||||||
|
(void *) EQ_EXIT);
|
||||||
|
/** Equate Operation Callbacks **/
|
||||||
|
/* OP_CLR - Clear Display */
|
||||||
|
edje_object_signal_callback_add(o, "OP_CLR", "*", _signal_cb,
|
||||||
|
(void *) OP_CLR);
|
||||||
|
/* OP_DIV - Division Operator */
|
||||||
|
edje_object_signal_callback_add(o, "OP_DIV", "*", _signal_cb,
|
||||||
|
(void *) OP_DIV);
|
||||||
|
/* OP_MUT - Mutplication Operator */
|
||||||
|
edje_object_signal_callback_add(o, "OP_MUT", "*", _signal_cb,
|
||||||
|
(void *) OP_MUT);
|
||||||
|
/* OP_ADD - Addition Operator */
|
||||||
|
edje_object_signal_callback_add(o, "OP_ADD", "*", _signal_cb,
|
||||||
|
(void *) OP_ADD);
|
||||||
|
/* OP_SUB - Subtraction Operator */
|
||||||
|
edje_object_signal_callback_add(o, "OP_SUB", "*", _signal_cb,
|
||||||
|
(void *) OP_SUB);
|
||||||
|
/* OP_EQU - Equals Operator */
|
||||||
|
edje_object_signal_callback_add(o, "OP_EQU", "*", _signal_cb,
|
||||||
|
(void *) OP_EQU);
|
||||||
|
/* OP_DEC - Decimal Operator */
|
||||||
|
edje_object_signal_callback_add(o, "OP_DEC", "*", _signal_cb,
|
||||||
|
(void *) OP_DEC);
|
||||||
|
/* OP_SIN - Sin of x in degrees */
|
||||||
|
edje_object_signal_callback_add(o, "OP_SIN", "*", _signal_cb,
|
||||||
|
(void *) OP_SIN);
|
||||||
|
/* OP_COS - Cos of x in degree */
|
||||||
|
edje_object_signal_callback_add(o, "OP_COS", "*", _signal_cb,
|
||||||
|
(void *) OP_COS);
|
||||||
|
/* OP_TAN - Tan of x in degrees */
|
||||||
|
edje_object_signal_callback_add(o, "OP_TAN", "*", _signal_cb,
|
||||||
|
(void *) OP_TAN);
|
||||||
|
/* OP_ROOT - The square root of x */
|
||||||
|
edje_object_signal_callback_add(o, "OP_ROOT", "*", _signal_cb,
|
||||||
|
(void *) OP_ROOT);
|
||||||
|
/* OP_POW - Raise x to the y power */
|
||||||
|
edje_object_signal_callback_add(o, "OP_POW", "*", _signal_cb,
|
||||||
|
(void *) OP_POW);
|
||||||
|
/* OP_LOG - Logarithm */
|
||||||
|
edje_object_signal_callback_add(o, "OP_LOG", "*", _signal_cb,
|
||||||
|
(void *) OP_LOG);
|
||||||
|
/* OP_LN - the natural logarithm */
|
||||||
|
edje_object_signal_callback_add(o, "OP_LN", "*", _signal_cb, (void *) OP_LN);
|
||||||
|
/* OP_EXP - e to the x */
|
||||||
|
edje_object_signal_callback_add(o, "OP_EXP", "*", _signal_cb,
|
||||||
|
(void *) OP_EXP);
|
||||||
|
/* OP_OBRAK - open bracket */
|
||||||
|
edje_object_signal_callback_add(o, "OP_OBRAK", "*", _signal_cb,
|
||||||
|
(void *) OP_OBRAK);
|
||||||
|
/* OP_CBRAK - close bracket */
|
||||||
|
edje_object_signal_callback_add(o, "OP_CBRAK", "*", _signal_cb,
|
||||||
|
(void *) OP_CBRAK);
|
||||||
|
|
||||||
|
/** Equate Number Callbacks **/
|
||||||
|
edje_object_signal_callback_add(o, "NUM_0", "*", _signal_cb, (void *) NUM_0);
|
||||||
|
edje_object_signal_callback_add(o, "NUM_1", "*", _signal_cb, (void *) NUM_1);
|
||||||
|
edje_object_signal_callback_add(o, "NUM_2", "*", _signal_cb, (void *) NUM_2);
|
||||||
|
edje_object_signal_callback_add(o, "NUM_3", "*", _signal_cb, (void *) NUM_3);
|
||||||
|
edje_object_signal_callback_add(o, "NUM_4", "*", _signal_cb, (void *) NUM_4);
|
||||||
|
edje_object_signal_callback_add(o, "NUM_5", "*", _signal_cb, (void *) NUM_5);
|
||||||
|
edje_object_signal_callback_add(o, "NUM_6", "*", _signal_cb, (void *) NUM_6);
|
||||||
|
edje_object_signal_callback_add(o, "NUM_7", "*", _signal_cb, (void *) NUM_7);
|
||||||
|
edje_object_signal_callback_add(o, "NUM_8", "*", _signal_cb, (void *) NUM_8);
|
||||||
|
edje_object_signal_callback_add(o, "NUM_9", "*", _signal_cb, (void *) NUM_9);
|
||||||
|
/* NUM_PI - 3.14159 */
|
||||||
|
edje_object_signal_callback_add(o, "NUM_PI", "*", _signal_cb, (void *) NUM_PI);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_create_gui(void)
|
||||||
|
{
|
||||||
|
char buf[1024];
|
||||||
|
|
||||||
|
win = elm_win_add(NULL, "equate", ELM_WIN_BASIC);
|
||||||
|
elm_win_title_set(win, "Equate");
|
||||||
|
elm_win_autodel_set(win, EINA_TRUE);
|
||||||
|
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
|
||||||
|
|
||||||
|
ly = elm_layout_add(win);
|
||||||
|
snprintf(buf, sizeof(buf), "%s/themes/equate.edj", elm_app_data_dir_get());
|
||||||
|
elm_layout_file_set(ly, buf, "Main");
|
||||||
|
evas_object_size_hint_weight_set(ly, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
|
evas_object_size_hint_align_set(ly, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
|
elm_win_resize_object_add(win, ly);
|
||||||
|
evas_object_show(ly);
|
||||||
|
|
||||||
|
evas_object_show(win);
|
||||||
|
evas_object_resize(win, 240, 320);
|
||||||
|
|
||||||
|
_edje_callbacks_define(elm_layout_edje_get(ly));
|
||||||
|
}
|
||||||
|
|
||||||
|
EAPI_MAIN int
|
||||||
|
elm_main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
|
||||||
|
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
|
||||||
|
elm_app_compile_bin_dir_set(PACKAGE_BIN_DIR);
|
||||||
|
elm_app_compile_data_dir_set(PACKAGE_DATA_DIR);
|
||||||
|
elm_app_info_set(elm_main, "equate", "images/equate.png");
|
||||||
|
|
||||||
equate.conf.mode = EDJE;
|
|
||||||
math_init();
|
math_init();
|
||||||
equate_init_gui(&equate, argc, argv);
|
_create_gui();
|
||||||
|
|
||||||
elm_run();
|
elm_run();
|
||||||
|
|
||||||
elm_shutdown();
|
elm_shutdown();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
ELM_MAIN()
|
||||||
|
|
Loading…
Reference in New Issue