Re: UrShape: Definition by controversy
- From: John Palmieri <johnp martianrock com>
- To: dia-list gnome org
- Subject: Re: UrShape: Definition by controversy
- Date: Fri, 06 Jul 2001 00:48:01 +0100
The "normal" UrContainer should have just layout behaviors same as the
Drag n' Drop ones without allowing Drag n' Drop. Perhaps we should make
DnD an attribute instead of a separate type of container. A note on
HORIZANTAL_ARRAY, VERTICAL_ARRAY containers. Perhaps these should be VBOX
and HBOX to correspond to Gtk+ containers of which they take the same
behaviors from. Arrays should be introduced during the scripting phase.
I will look at the code this weekend and comment more. Any luck with
CVS? Worse comes to worse we can always start a sourceforge project and
then send patches to the core team. Give me a month and I will be able to
start contributing code. I hate not having the T3 connection I had at
school. What happened to the other guys? The world will never know.
Hehe.
-J5
Andre Kloss wrote:
Hi again.
I'm running out of time as well as motivation and, worst of all,
ideas. Ok, let's see, what we have now:
I need some Callback that a dragged UrShape can perform in order to
interact somehow with the UrContainer. The source for the UrShape
side of this functionality should read like this:
if (IS_IN(myself, container->bounding_box) && !isOver) {
isOver = TRUE; /* Perform this once */
container->behaviour->isOver(container, myself); /* interact */
}
Same goes for isOut and isDropped. I'm not sure yet if the select
callback belongs to the container or the UrShape, but well, here we
are - for now.
I still have no clue about the "normal" UrContainer Behaviour. If
someone could enlighten this to me, I would be able to think further
in that direction.
cu Andre
8<-----------------------------UrShape.h--------------------->8
/* urshape.h : defining the generic UrShape */
#ifndef URSHAPE_H
#define URSHAPE_H
#include "element.h"
/* What else has to be included? */
typedef enum _UrContainerType UrContainerType;
typedef struct _UrContainerBehaviour UrContainerBehaviour;
typedef struct _UrContainer UrContainer;
typedef struct _UrShape UrShape;
enum _UrContainerType {
SINGLE,
HORIZANTAL_ARRAY,
VERTICAL_ARRAY,
TABLE
};
struct _UrContainerBehaviour {
void (isOver)(UrContainer *myself, UrShape *other);
void (isOut)(UrContainer *myself, UrShape *other);
void (isDropped)(UrContainer *myself, UrShape *other);
void (select)(UrContainer *myself);
/* YOUR PROPOSAL GOES HERE */
}
struct _UrContainer {
UrContainerType type; /* Is it a Simple-/Array- or
Table-Container? */
UrContainerBehaviour behaviour; /* To discriminate behaviour */
/* (Dynamic) geometry stuff */
Rectangle *bounding_box;
GList *rows; /* The left border of rows */
GList *columns; /* The upper border of columns */
}
struct _UrShape {
Element element; /* Inheritance (C sometimes sucks ;) */
/* UrShape container stuff */
UrContainer *embedding; /* NULL if free,
"parent's" container else */
int row,column; /* For all but SINGLE, it'll be nice to know in what
row/column the UrShape is embedded. */
GList *childrenContainers; /* The containers I have */
/* The miniDOM. Thanx to Cyrille, now it _is_ mini. */
UrShape *parent_shape;
GList *self; /* this->self->data == this */
GList *children; /* (this->children->data->parent_shape == this ||
this->children == NULL) */
};
#endif
_______________________________________________
Dia-list mailing list
Dia-list gnome org
http://mail.gnome.org/mailman/listinfo/dia-list
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]