home
·
contact
·
privacy
projects
/
plomrogue
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
604c6b4
)
Also read window title from config/windows/ files. To facilitate that, also corrected...
author
Christian Heller
<c.heller@plomlompom.de>
Thu, 29 Aug 2013 23:19:05 +0000
(
01:19
+0200)
committer
Christian Heller
<c.heller@plomlompom.de>
Thu, 29 Aug 2013 23:19:05 +0000
(
01:19
+0200)
config/windows/Info
patch
|
blob
|
history
config/windows/Keys
patch
|
blob
|
history
config/windows/Log
patch
|
blob
|
history
config/windows/Map
patch
|
blob
|
history
src/wincontrol.c
patch
|
blob
|
history
src/wincontrol.h
patch
|
blob
|
history
src/windows.c
patch
|
blob
|
history
src/windows.h
patch
|
blob
|
history
diff --git
a/config/windows/Info
b/config/windows/Info
index 5ebcc55a7dd8a8fd76aa6c5847d19a8022f87537..a8759ad3a962c0218dee06d6e3b405cfe8bf55f1 100644
(file)
--- a/
config/windows/Info
+++ b/
config/windows/Info
@@
-1,2
+1,3
@@
+Info
3
20
3
20
diff --git
a/config/windows/Keys
b/config/windows/Keys
index 8defa01ae792d9d0dc0262f07bf20ffd109646f4..a719bf397ebd866b56abc84e5fa32a620134fef9 100644
(file)
--- a/
config/windows/Keys
+++ b/
config/windows/Keys
@@
-1,2
+1,3
@@
+Keys
0
29
0
29
diff --git
a/config/windows/Log
b/config/windows/Log
index 245603ac58d04dd04e4b3bff242287431743eed4..feef14f4eca5f674f7b0311ef96008af83019311 100644
(file)
--- a/
config/windows/Log
+++ b/
config/windows/Log
@@
-1,2
+1,3
@@
+Log
-4
20
-4
20
diff --git
a/config/windows/Map
b/config/windows/Map
index 7ed456a248144224a927f3124402e2fab68812d4..a403ed8fbc60c30c9b4aad09140fe0329cc77f3c 100644
(file)
--- a/
config/windows/Map
+++ b/
config/windows/Map
@@
-1,2
+1,3
@@
+Map
0
-51
0
-51
diff --git
a/src/wincontrol.c
b/src/wincontrol.c
index f4861d833c6869bc46947a5b3beb5c22651bd749..cfa593b42455b81e58dd1ff325c89a128a87d1a9 100644
(file)
--- a/
src/wincontrol.c
+++ b/
src/wincontrol.c
@@
-34,6
+34,9
@@
extern struct Win init_win_from_file(struct World * world, char * w_name,
char * line = malloc(linemax);
err = "Trouble in init_win_from_file() with fgets().";
exit_err(NULL == fgets(line, linemax, file), world, err);
char * line = malloc(linemax);
err = "Trouble in init_win_from_file() with fgets().";
exit_err(NULL == fgets(line, linemax, file), world, err);
+ char * title = malloc(strlen(line));
+ memcpy(title, line, strlen(line) - 1);
+ exit_err(NULL == fgets(line, linemax, file), world, err);
int16_t height = atoi(line);
exit_err(NULL == fgets(line, linemax, file), world, err);
int16_t width = atoi(line);
int16_t height = atoi(line);
exit_err(NULL == fgets(line, linemax, file), world, err);
int16_t width = atoi(line);
@@
-42,7
+45,10
@@
extern struct Win init_win_from_file(struct World * world, char * w_name,
exit_err(fclose(file), world, err);
struct WinMeta * wmeta = world->wins.meta;
exit_err(fclose(file), world, err);
struct WinMeta * wmeta = world->wins.meta;
- return init_win(wmeta, w_name, height, width, world, f);
+ struct Win w;
+ init_win(wmeta, &w, title, height, width, world, f);
+ free(title);
+ return w;
}
}
diff --git
a/src/wincontrol.h
b/src/wincontrol.h
index ba81ea36275bd3041f102ac62cc1fd13add04cd2..c8dc83ba79b430a37d41076e9a18a114ed057912 100644
(file)
--- a/
src/wincontrol.h
+++ b/
src/wincontrol.h
@@
-16,9
+16,9
@@
struct World;
-/* Wrapper around init_win() that reads the desired window size
from a file
- *
at the path prefixing the provided win name "w_name" with "config/windows/".
- * "
f"
is the window drawing function (Win._draw()).
+/* Wrapper around init_win() that reads the desired window size
and title from a
+ *
file at the path prefixing the provided win name "w_name" with
+ * "
config/windows/". "f"()
is the window drawing function (Win._draw()).
*/
extern struct Win init_win_from_file(struct World * world, char * w_name,
void (* f) (struct Win *));
*/
extern struct Win init_win_from_file(struct World * world, char * w_name,
void (* f) (struct Win *));
diff --git
a/src/windows.c
b/src/windows.c
index efba9190ecbce74ef7f2a3cf703075534689af15..af710dd34657e6c06ae2b9fdcdd61b2adbbb6b6a 100644
(file)
--- a/
src/windows.c
+++ b/
src/windows.c
@@
-388,42
+388,46
@@
extern uint8_t init_win_meta(WINDOW * screen, struct WinMeta * wmeta)
-extern
struct Win init_win(struct WinMeta * wmeta
, char * title,
-
int16_t height, int16_t width,
-
void * data, void * func)
+extern
uint8_t init_win(struct WinMeta * wmeta, struct Win * w
, char * title,
+ int16_t height, int16_t width,
+ void * data, void * func)
{
{
- struct Win w;
- w._prev = 0;
- w._next = 0;
- w.frame.curses_win = 0;
- w._title = title;
- w.data = data;
- w._draw = func;
+ w->_prev = 0;
+ w->_next = 0;
+ w->frame.curses_win = 0;
+ w->_title = malloc(strlen(title) + 1);
+ if (NULL == w->_title)
+ {
+ return 1;
+ }
+ sprintf(w->_title, title, strlen(title));
+ w->data = data;
+ w->_draw = func;
if (0 < width)
{
if (0 < width)
{
- w
.
frame.size.x = width;
+ w
->
frame.size.x = width;
}
else if (0 > width)
{
}
else if (0 > width)
{
- w
.
frame.size.x = wmeta->padframe.size.x + width;
+ w
->
frame.size.x = wmeta->padframe.size.x + width;
}
else
{
}
else
{
- w
.
frame.size.x = wmeta->padframe.size.x;
+ w
->
frame.size.x = wmeta->padframe.size.x;
}
if (0 < height && height <= wmeta->padframe.size.y - 1)
{
}
if (0 < height && height <= wmeta->padframe.size.y - 1)
{
- w
.
frame.size.y = height;
+ w
->
frame.size.y = height;
}
else if (0 > height && wmeta->padframe.size.y + (height - 1) > 0)
{
}
else if (0 > height && wmeta->padframe.size.y + (height - 1) > 0)
{
- w
.
frame.size.y = wmeta->padframe.size.y + (height - 1);
+ w
->
frame.size.y = wmeta->padframe.size.y + (height - 1);
}
else
{
}
else
{
- w
.
frame.size.y = wmeta->padframe.size.y - 1;
+ w
->
frame.size.y = wmeta->padframe.size.y - 1;
}
}
- return
w
;
+ return
0
;
}
}
diff --git
a/src/windows.h
b/src/windows.h
index a98bbdb6708f8fc50c03d46be7cf4573be0b2f08..0e3f79bfd63dba060fb15fc3a7b27a9b8aa3c872 100644
(file)
--- a/
src/windows.h
+++ b/
src/windows.h
@@
-22,7
+22,7
@@
*
* Functions that return uint8_t return these error codes:
* 0 - success
*
* Functions that return uint8_t return these error codes:
* 0 - success
- * 1 - memory allocation error
(of ncurses' pads/windows, or scroll hint texts)
+ * 1 - memory allocation error
* 2 - would force virtual screen to grow beyond width or height of 2^16 cells
*
* TODO: Expose less internals to the API.
* 2 - would force virtual screen to grow beyond width or height of 2^16 cells
*
* TODO: Expose less internals to the API.
@@
-99,9
+99,9
@@
extern uint8_t init_win_meta(WINDOW * screen, struct WinMeta * wmeta);
-/*
Create a window as child of "wmeta" titled "title" of "height" and "width"
- * a
nd appointing "func"() to interpret and draw the content stored at "data"
- *
if
the window is visible.
+/*
Initialize a window child of "wmeta" to "title", "height" and "width" and
+ * a
ppointing "func"() to interpret and draw the content stored at "data" when
+ * the window is visible.
*
* Pass 0 for "width" to make the window as wide as the terminal screen. Pass
* negative values for "width" to make the size so many cells smaller than the
*
* Pass 0 for "width" to make the window as wide as the terminal screen. Pass
* negative values for "width" to make the size so many cells smaller than the
@@
-111,12
+111,11
@@
extern uint8_t init_win_meta(WINDOW * screen, struct WinMeta * wmeta);
* allowed height is also applied for positive values that exceed it or negative
* values that would reduce the window height < 1 cell.
*
* allowed height is also applied for positive values that exceed it or negative
* values that would reduce the window height < 1 cell.
*
- * Other members of the Win struct are initialized to 0. The window will stay
- * invisible until appended to the chain of visible windows via append_win().
+ * Other members of the Win struct are initialized to 0.
*/
*/
-extern
struct Win init_win(struct WinMeta * wmeta
, char * title,
-
int16_t height, int16_t width,
-
void * data, void * func);
+extern
uint8_t init_win(struct WinMeta * wmeta, struct Win * w
, char * title,
+ int16_t height, int16_t width,
+ void * data, void * func);