and lets move on to the... FUN!

SVN revision: 72264
This commit is contained in:
Carsten Haitzler 2012-06-17 04:10:17 +00:00
parent 2e2fb45271
commit c5ee45929b
5 changed files with 191 additions and 7 deletions

View File

@ -28,6 +28,19 @@ collections {
visible: 0;
}
}
part { name: "fade"; type: RECT;
description { state: "default" 0.0;
}
description { state: "translucent" 0.0;
inherit: "default" 0.0;
color: 255 255 255 128;
}
}
part { name: "terminology.background"; type: SWALLOW;
clip_to: "fade";
description { state: "default" 0.0;
}
}
part { name: "terminology.content"; type: SWALLOW;
description { state: "default" 0.0;
rel1.offset: 1 2;
@ -99,6 +112,7 @@ collections {
action: STATE_SET "translucent" 0.0;
target: "base";
target: "shadow";
target: "fade";
}
program { name: "trans_off";
signal: "translucent,off";
@ -106,6 +120,7 @@ collections {
action: STATE_SET "default" 0.0;
target: "base";
target: "shadow";
target: "fade";
}
}
}

View File

@ -13,9 +13,10 @@ col.c col.h \
config.c config.h \
keyin.c keyin.h \
main.c main.h \
media.c media.h \
options.c options.h \
options_font.c options_font.h \
options_behavior.c options_behavior.h \
options_font.c options_font.h \
termio.c termio.h \
termpty.c termpty.h \
utf8.c utf8.h \

View File

@ -4,9 +4,10 @@
#include "termio.h"
#include "config.h"
#include "options.h"
#include "media.h"
const char *cmd = NULL;
static Evas_Object *win = NULL, *bg = NULL, *term = NULL;
static Evas_Object *win = NULL, *bg = NULL, *term = NULL, *media = NULL;
static Ecore_Timer *flush_timer = NULL;
static void
@ -79,12 +80,34 @@ main_trans_update(void)
}
}
void
main_media_update(void)
{
Evas_Object *o;
if (config->background)
{
if (media) evas_object_del(media);
o = media = media_add(win, config->background, MEDIA_BG);
edje_object_part_swallow(bg, "terminology.background", o);
evas_object_show(o);
}
else
{
if (media)
{
evas_object_del(media);
media = NULL;
}
}
}
EAPI_MAIN int
elm_main(int argc, char **argv)
{
int i;
Evas_Object *o;
char buf[4096];
char buf[4096], *p;
config_init();
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
@ -99,6 +122,25 @@ elm_main(int argc, char **argv)
i++;
cmd = argv[i];
}
else if ((!strcmp(argv[i], "-t")) && (i < (argc - 1)))
{
i++;
if (config->theme) eina_stringshare_del(config->theme);
p = strchr(argv[i], '.');
if ((!p) || (strcasecmp(p, ".edj")))
{
snprintf(buf, sizeof(buf), "%s.edj", argv[i]);
config->theme = eina_stringshare_add(buf);
}
else
config->theme = eina_stringshare_add(argv[i]);
}
else if ((!strcmp(argv[i], "-b")) && (i < (argc - 1)))
{
i++;
if (config->background) eina_stringshare_del(config->background);
config->background = eina_stringshare_add(argv[i]);
}
}
win = tg_win_add();
@ -106,9 +148,14 @@ elm_main(int argc, char **argv)
bg = o = edje_object_add(evas_object_evas_get(win));
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(o, EVAS_HINT_FILL, EVAS_HINT_FILL);
snprintf(buf, sizeof(buf), "%s/themes/%s",
elm_app_data_dir_get(), config->theme);
edje_object_file_set(o, buf, "terminology/background");
if (strchr(config->theme, '/'))
edje_object_file_set(o, config->theme, "terminology/background");
else
{
snprintf(buf, sizeof(buf), "%s/themes/%s",
elm_app_data_dir_get(), config->theme);
edje_object_file_set(o, buf, "terminology/background");
}
elm_win_resize_object_add(win, o);
evas_object_show(o);
@ -120,10 +167,11 @@ elm_main(int argc, char **argv)
_cb_size_hint, win);
edje_object_part_swallow(bg, "terminology.content", o);
evas_object_smart_callback_add(o, "options", _cb_options, NULL);
evas_object_smart_callback_add(o, "options", _cb_change, NULL);
evas_object_smart_callback_add(o, "change", _cb_change, NULL);
evas_object_show(o);
main_trans_update();
main_media_update();
evas_object_smart_callback_add(win, "focus,in", _cb_focus_in, term);
evas_object_smart_callback_add(win, "focus,out", _cb_focus_out, term);

117
src/bin/media.c Normal file
View File

@ -0,0 +1,117 @@
#include <Elementary.h>
#include "config.h"
typedef struct _Media Media;
struct _Media
{
Evas_Object_Smart_Clipped_Data __clipped_data;
Evas_Object *event;
};
static Evas_Smart *_smart = NULL;
static Evas_Smart_Class _meida_sc = EVAS_SMART_CLASS_INIT_NULL;
static void _smart_calculate(Evas_Object *obj);
static void
_smart_add(Evas_Object *obj)
{
Media *sd;
Evas_Object_Smart_Clipped_Data *cd;
Evas_Object *o;
char buf[4096];
_meida_sc.add(obj);
cd = evas_object_smart_data_get(obj);
if (!cd) return;
sd = calloc(1, sizeof(Media));
if (!sd) return;
sd->__clipped_data = *cd;
free(cd);
evas_object_smart_data_set(obj, sd);
o = evas_object_rectangle_add(evas_object_evas_get(obj));
evas_object_smart_member_add(o, obj);
sd->event = o;
evas_object_color_set(o, 128, 0, 0, 128);
evas_object_show(o);
}
static void
_smart_del(Evas_Object *obj)
{
Media *sd = evas_object_smart_data_get(obj);
if (!sd) return;
if (sd->event) evas_object_del(sd->event);
_meida_sc.del(obj);
evas_object_smart_data_set(obj, NULL);
}
static void
_smart_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
{
Media *sd = evas_object_smart_data_get(obj);
Evas_Coord ow, oh;
if (!sd) return;
evas_object_geometry_get(obj, NULL, NULL, &ow, &oh);
if ((ow == w) && (oh == h)) return;
evas_object_smart_changed(obj);
evas_object_resize(sd->event, ow, oh);
}
static void
_smart_calculate(Evas_Object *obj)
{
Media *sd = evas_object_smart_data_get(obj);
Evas_Coord ox, oy, ow, oh;
if (!sd) return;
evas_object_geometry_get(obj, &ox, &oy, &ow, &oh);
evas_object_move(sd->event, ox, oy);
evas_object_resize(sd->event, ow, oh);
}
static void
_smart_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
{
Media *sd = evas_object_smart_data_get(obj);
if (!sd) return;
evas_object_smart_changed(obj);
}
static void
_smart_init(void)
{
static Evas_Smart_Class sc;
evas_object_smart_clipped_smart_set(&_meida_sc);
sc = _meida_sc;
sc.name = "media";
sc.version = EVAS_SMART_CLASS_VERSION;
sc.add = _smart_add;
sc.del = _smart_del;
sc.resize = _smart_resize;
sc.move = _smart_move;
sc.calculate = _smart_calculate;
_smart = evas_smart_class_new(&sc);
}
Evas_Object *
media_add(Evas_Object *parent, const char *src, int mode)
{
Evas *e;
Evas_Object *obj;
Media *sd;
EINA_SAFETY_ON_NULL_RETURN_VAL(parent, NULL);
e = evas_object_evas_get(parent);
if (!e) return NULL;
if (!_smart) _smart_init();
obj = evas_object_smart_add(e, _smart);
sd = evas_object_smart_data_get(obj);
if (!sd) return obj;
return obj;
}

3
src/bin/media.h Normal file
View File

@ -0,0 +1,3 @@
#define MEDIA_BG 0
Evas_Object *media_add(Evas_Object *parent, const char *src, int mode);