ibox makes it first gadcon moves.

SVN revision: 22689
This commit is contained in:
Carsten Haitzler 2006-05-18 06:30:33 +00:00
parent e5a34ab98f
commit 19fd612b97
12 changed files with 2091 additions and 1781 deletions

2
TODO
View File

@ -8,6 +8,8 @@ Some of the things (in very short form) that need to be done to E17...
BUGS / FIXES
-------------------------------------------------------------------------------
* BUG: pager dnd is broken when shelf below (in desktop canvas) and @ of rows
is > 1.
* BUG: ghost windows happen if windows close when on another desktop or if
windows are very short-lived
* BUG: k3b has minimization issues when burning cds (it tries to unminimize

File diff suppressed because it is too large Load Diff

View File

@ -649,7 +649,7 @@ e_config_init(void)
CFG_MODULE("start", 1);
CFG_MODULE("ibar", 1);
CFG_MODULE("ibox", 0);
CFG_MODULE("ibox", 1);
CFG_MODULE("dropshadow", 1);
CFG_MODULE("clock", 1);
CFG_MODULE("battery", 1);
@ -1094,31 +1094,33 @@ e_config_init(void)
CFG_GADCON_CLIENT("ibar", "default", 800, 200,
400 - (16 / 2), "inset", 1, 0);
CFG_GADCON_CLIENT("temperature", "default", 800, 32,
800 - (4 * 32), NULL, 0, 0);
800 - (5 * 32), NULL, 0, 0);
CFG_GADCON_CLIENT("cpufreq", "default", 800, 32,
800 - (3 * 32), NULL, 0, 0);
800 - (4 * 32), NULL, 0, 0);
CFG_GADCON_CLIENT("battery", "default", 800, 32,
800 - (2 * 32), NULL, 0, 0);
800 - (3 * 32), NULL, 0, 0);
CFG_GADCON_CLIENT("clock", "default", 800, 32,
800 - (1 * 32), NULL, 0, 0);
800 - (2 * 32), NULL, 0, 0);
CFG_GADCON_CLIENT("ibox", "default", 800, 200,
400 - (1 * 32), "inset", 1, 0);
/* additional shelves for up to 3 more heads by default */
CFG_GADCON("shelf", "1");
CFG_GADCON_CLIENT("pager", "default2", 800, 120,
0, "inset", 0, 0);
CFG_GADCON_CLIENT("ibar", "default2", 800, 200,
400 - (16 / 2), "inset", 1, 0);
CFG_GADCON_CLIENT("ibox", "default", 800, 200,
400 - (1 * 32), "inset", 1, 0);
CFG_GADCON("shelf", "2");
CFG_GADCON_CLIENT("pager", "default3", 800, 120,
0, "inset", 0, 0);
CFG_GADCON_CLIENT("ibar", "default2", 800, 200,
400 - (16 / 2), "inset", 1, 0);
CFG_GADCON_CLIENT("ibox", "default", 800, 200,
400 - (1 * 32), "inset", 1, 0);
CFG_GADCON("shelf", "3");
CFG_GADCON_CLIENT("pager", "default4", 800, 120,
0, "inset", 0, 0);
CFG_GADCON_CLIENT("ibar", "default2", 800, 200,
400 - (16 / 2), "inset", 1, 0);
CFG_GADCON_CLIENT("ibox", "default", 800, 200,
400 - (1 * 32), "inset", 1, 0);
}
IFCFGEND;

View File

@ -89,6 +89,7 @@ static IBar_Icon *_ibar_icon_new(IBar *b, E_App *a);
static void _ibar_icon_free(IBar_Icon *ic);
static void _ibar_icon_fill(IBar_Icon *ic);
static void _ibar_icon_empty(IBar_Icon *ic);
static void _ibar_icon_signal_emit(IBar_Icon *ic, char *sig, char *src);
static void _ibar_cb_app_change(void *data, E_App *a, E_App_Change ch);
static int _ibar_cb_timer_drop_recalc(void *data);
static void _ibar_cb_obj_moveresize(void *data, Evas *e, Evas_Object *obj, void *event_info);
@ -599,18 +600,23 @@ _ibar_icon_fill(IBar_Icon *ic)
static void
_ibar_icon_empty(IBar_Icon *ic)
{
evas_object_del(ic->o_icon);
evas_object_del(ic->o_icon2);
if (ic->o_icon) evas_object_del(ic->o_icon);
if (ic->o_icon2) evas_object_del(ic->o_icon2);
ic->o_icon = NULL;
ic->o_icon2 = NULL;
}
static void
_ibar_icon_signal_emit(IBar_Icon *ic, char *sig, char *src)
{
edje_object_signal_emit(ic->o_holder, sig, src);
edje_object_signal_emit(ic->o_icon, sig, src);
edje_object_signal_emit(ic->o_holder2, sig, src);
edje_object_signal_emit(ic->o_icon2, sig, src);
if (ic->o_holder)
edje_object_signal_emit(ic->o_holder, sig, src);
if (ic->o_icon)
edje_object_signal_emit(ic->o_icon, sig, src);
if (ic->o_holder2)
edje_object_signal_emit(ic->o_holder2, sig, src);
if (ic->o_icon2)
edje_object_signal_emit(ic->o_icon2, sig, src);
}
static void
@ -1220,6 +1226,7 @@ _ibar_inst_cb_drop(void *data, const char *type, void *event_info)
inst->ibar->o_drop = NULL;
evas_object_del(inst->ibar->o_drop_over);
inst->ibar->o_drop_over = NULL;
_ibar_empty_handle(inst->ibar);
_ibar_resize_handle(inst->ibar);
_gc_orient(inst->gcc);
}

View File

@ -4,6 +4,7 @@ MODULE = ibox
# data files for the module
filesdir = $(libdir)/enlightenment/modules/$(MODULE)
files_DATA = \
module.eap \
module_icon.png
EXTRA_DIST = $(files_DATA)
@ -19,9 +20,7 @@ INCLUDES = -I. \
pkgdir = $(libdir)/enlightenment/modules/$(MODULE)/$(MODULE_ARCH)
pkg_LTLIBRARIES = module.la
module_la_SOURCES = e_mod_main.c \
e_mod_main.h \
e_mod_config.c \
e_mod_config.h
e_mod_main.h
module_la_LIBADD = @e_libs@ @dlopen_libs@
module_la_LDFLAGS = -module -avoid-version
module_la_DEPENDENCIES = $(top_builddir)/config.h

View File

@ -1,175 +0,0 @@
#include "e.h"
#include "e_mod_main.h"
#include "e_mod_config.h"
#include "config.h"
struct _E_Config_Dialog_Data
{
int autofit;
int follower;
int iconsize;
double follow_speed;
double autoscroll_speed;
};
/* Protos */
static void *_create_data(E_Config_Dialog *cfd);
static void _free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static Evas_Object *_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
static int _basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
static Evas_Object *_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata);
static int _advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata);
void
_config_ibox_module(E_Container *con, IBox *ibox)
{
E_Config_Dialog *cfd;
E_Config_Dialog_View *v;
v = E_NEW(E_Config_Dialog_View, 1);
/* Dialog Methods */
v->create_cfdata = _create_data;
v->free_cfdata = _free_data;
v->basic.apply_cfdata = _basic_apply_data;
v->basic.create_widgets = _basic_create_widgets;
v->advanced.apply_cfdata = _advanced_apply_data;
v->advanced.create_widgets = _advanced_create_widgets;
/* Create The Dialog */
cfd = e_config_dialog_new(con, _("IBox Configuration"), NULL, 0, v, ibox);
ibox->config_dialog = cfd;
}
static void
_fill_data(IBox *ib, E_Config_Dialog_Data *cfdata)
{
cfdata->autofit = (ib->conf->width == IBOX_WIDTH_AUTO);
cfdata->follower = ib->conf->follower;
cfdata->iconsize = ib->conf->iconsize;
cfdata->follow_speed = ib->conf->follow_speed;
cfdata->autoscroll_speed = ib->conf->autoscroll_speed;
}
static void *
_create_data(E_Config_Dialog *cfd)
{
E_Config_Dialog_Data *cfdata;
IBox *ib;
ib = cfd->data;
cfdata = E_NEW(E_Config_Dialog_Data, 1);
_fill_data(ib, cfdata);
return cfdata;
}
static void
_free_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
IBox *ib;
ib = cfd->data;
ib->config_dialog = NULL;
free(cfdata);
}
static Evas_Object *
_basic_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *ob;
o = e_widget_list_add(evas, 0, 0);
ob = e_widget_check_add(evas, _("Show Follower"), &(cfdata->follower));
e_widget_list_object_append(o, ob, 1, 1, 0.5);
ob = e_widget_check_add(evas, _("Auto Fit Icons"), &(cfdata->autofit));
e_widget_list_object_append(o, ob, 1, 1, 0.5);
return o;
}
static int
_basic_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
IBox *ib;
ib = cfd->data;
e_border_button_bindings_ungrab_all();
if ((cfdata->follower) && (!ib->conf->follower))
ib->conf->follower = 1;
else if (!(cfdata->follower) && (ib->conf->follower))
ib->conf->follower = 0;
if ((cfdata->autofit) && (ib->conf->width == IBOX_WIDTH_FIXED))
ib->conf->width = IBOX_WIDTH_AUTO;
else if (!(cfdata->autofit) && (ib->conf->width == IBOX_WIDTH_AUTO))
ib->conf->width = IBOX_WIDTH_FIXED;
e_border_button_bindings_grab_all();
e_config_save_queue();
_ibox_box_cb_config_updated(ib);
return 1;
}
static Evas_Object *
_advanced_create_widgets(E_Config_Dialog *cfd, Evas *evas, E_Config_Dialog_Data *cfdata)
{
Evas_Object *o, *of, *ob;
o = e_widget_list_add(evas, 0, 0);
of = e_widget_framelist_add(evas, _("Follower"), 0);
ob = e_widget_check_add(evas, _("Visible"), &(cfdata->follower));
e_widget_framelist_object_append(of, ob);
ob = e_widget_label_add(evas, _("Follow Speed"));
e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%1.2f px/s"), 0.0, 1.0, 0.01, 0, &(cfdata->follow_speed), NULL,200);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
of = e_widget_framelist_add(evas, _("Icon Size"), 0);
ob = e_widget_slider_add(evas, 1, 0, _("%3.0f pixels"), 8.0, 128.0, 1.0, 0, NULL, &(cfdata->iconsize), 200);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
of = e_widget_framelist_add(evas, _("Width"), 0);
ob = e_widget_check_add(evas, _("Auto Fit"), &(cfdata->autofit));
e_widget_framelist_object_append(of, ob);
ob = e_widget_label_add(evas, _("Autoscroll Speed:"));
e_widget_framelist_object_append(of, ob);
ob = e_widget_slider_add(evas, 1, 0, _("%1.2f px/s"), 0.0, 1.0, 0.01, 0, &(cfdata->autoscroll_speed), NULL,200);
e_widget_framelist_object_append(of, ob);
e_widget_list_object_append(o, of, 1, 1, 0.5);
return o;
}
static int
_advanced_apply_data(E_Config_Dialog *cfd, E_Config_Dialog_Data *cfdata)
{
IBox *ib;
ib = cfd->data;
e_border_button_bindings_ungrab_all();
if ((cfdata->follower) && (!ib->conf->follower))
ib->conf->follower = 1;
else if (!(cfdata->follower) && (ib->conf->follower))
ib->conf->follower = 0;
if ((cfdata->autofit) && (ib->conf->width == IBOX_WIDTH_FIXED))
ib->conf->width = IBOX_WIDTH_AUTO;
else if (!(cfdata->autofit) && (ib->conf->width == IBOX_WIDTH_AUTO))
ib->conf->width = IBOX_WIDTH_FIXED;
if (cfdata->iconsize != ib->conf->iconsize)
ib->conf->iconsize = cfdata->iconsize;
if (cfdata->follow_speed != ib->conf->follow_speed)
ib->conf->follow_speed = cfdata->follow_speed;
if (cfdata->autoscroll_speed != ib->conf->autoscroll_speed)
ib->conf->autoscroll_speed = cfdata->autoscroll_speed;
e_border_button_bindings_grab_all();
e_config_save_queue();
_ibox_box_cb_config_updated(ib);
return 1;
}

View File

@ -1,8 +0,0 @@
#ifdef E_TYPEDEFS
#else
#ifndef E_MOD_CONFIG_H
#define E_MOD_CONFIG_H
#include "e_mod_main.h"
void _config_ibox_module(E_Container *con, IBox *ibox);
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@ -5,84 +5,14 @@
#define E_MOD_MAIN_H
typedef struct _Config Config;
typedef struct _Config_Box Config_Box;
typedef struct _IBox IBox;
typedef struct _IBox_Box IBox_Box;
typedef struct _IBox_Icon IBox_Icon;
#define IBOX_WIDTH_AUTO -1
#define IBOX_WIDTH_FIXED -2
struct _Config
{
double follow_speed;
int follower;
double autoscroll_speed;
int iconsize;
int width;
Evas_List *boxes;
};
struct _Config_Box
{
unsigned char enabled;
};
struct _IBox
{
Evas_List *boxes;
E_Menu *config_menu;
Config *conf;
E_Config_Dialog *config_dialog;
};
struct _IBox_Box
{
IBox *ibox;
E_Container *con;
Evas *evas;
E_Menu *menu;
Evas_Object *box_object;
Evas_Object *overlay_object;
Evas_Object *item_object;
Evas_Object *event_object;
Evas_List *icons;
Ecore_Event_Handler *ev_handler_border_iconify;
Ecore_Event_Handler *ev_handler_border_uniconify;
Ecore_Event_Handler *ev_handler_border_remove;
double align, align_req;
double follow, follow_req;
Ecore_Timer *timer;
Ecore_Animator *animator;
Evas_Coord x, y, w, h;
struct {
Evas_Coord l, r, t, b;
} box_inset;
struct {
Evas_Coord l, r, t, b;
} icon_inset;
E_Gadman_Client *gmc;
Config_Box *conf;
};
struct _IBox_Icon
{
IBox_Box *ibb;
E_Border *border;
Evas_Object *bg_object;
Evas_Object *overlay_object;
Evas_Object *icon_object;
Evas_Object *event_object;
unsigned char raise_on_hilight : 1;
/* just config state */
E_Module *module;
Evas_List *instances;
E_Menu *menu;
Evas_List *handlers;
};
EAPI extern E_Module_Api e_modapi;
@ -92,8 +22,5 @@ EAPI int e_modapi_shutdown (E_Module *m);
EAPI int e_modapi_save (E_Module *m);
EAPI int e_modapi_info (E_Module *m);
EAPI int e_modapi_about (E_Module *m);
EAPI int e_modapi_config (E_Module *m);
void _ibox_box_cb_config_updated(void *data);
#endif

BIN
src/modules/ibox/module.eap Normal file

Binary file not shown.

Binary file not shown.

View File

@ -1569,6 +1569,7 @@ _pager_inst_cb_drop(void *data, const char *type, void *event_info)
{
Evas_Coord nx, ny;
if (bd->iconic) e_border_uniconify(bd);
e_border_desk_set(bd, pd->desk);
if ((!pw) || ((pw) && (!pw->drag.no_place)))
{