27
27
#include "gnumeric-gconf-priv.h"
28
28
#include "parse-util.h"
30
#include <goffice/app/go-doc.h>
31
#include <goffice/app/go-cmd-context.h>
32
#include <goffice/utils/go-file.h>
33
#include <goffice/utils/datetime.h>
34
#include <goffice/utils/go-glib-extras.h>
30
#include <goffice/goffice.h>
36
32
#include <glib/gi18n-lib.h>
37
33
#include <string.h>
1262
gnm_page_breaks_dup_non_auto_breaks (GnmPageBreaks const *src)
1265
GnmPageBreaks *dst = gnm_page_breaks_new (src->is_vert);
1266
GArray *d_details = dst->details;
1267
GArray const *s_details = src->details;
1268
GnmPageBreak *pbreak;
1271
/* no need to validate through gnm_page_breaks_append_break, just dup */
1272
for (i = 0; i < s_details->len ; i++) {
1273
pbreak = &g_array_index (s_details, GnmPageBreak, i);
1274
if (pbreak->type != GNM_PAGE_BREAK_AUTO)
1275
g_array_append_val (d_details, *pbreak);
1266
1283
gnm_page_breaks_append_break (GnmPageBreaks *breaks,
1313
gnm_page_breaks_get_break (GnmPageBreaks *breaks,
1319
return GNM_PAGE_BREAK_NONE;
1321
for (i = breaks->details->len - 1; i >= 0; i--) {
1322
GnmPageBreak *pbreak;
1323
pbreak = &g_array_index (breaks->details, GnmPageBreak, i);
1324
if (pbreak->pos < pos)
1325
return GNM_PAGE_BREAK_NONE;
1326
if (pbreak->pos == pos)
1327
return (pbreak->type);
1329
return GNM_PAGE_BREAK_NONE;
1333
gnm_page_breaks_get_next_manual_break (GnmPageBreaks *breaks,
1341
for (i = 0; i < breaks->details->len; i++) {
1342
GnmPageBreak const *pbreak;
1343
pbreak = &g_array_index (breaks->details, GnmPageBreak, i);
1344
if (pbreak->pos > pos
1345
&& pbreak->type != GNM_PAGE_BREAK_AUTO)
1352
gnm_page_breaks_get_next_break (GnmPageBreaks *breaks,
1360
for (i = 0; i < breaks->details->len; i++) {
1361
GnmPageBreak const *pbreak;
1362
pbreak = &g_array_index (breaks->details, GnmPageBreak, i);
1363
if (pbreak->pos > pos)
1370
gnm_page_breaks_set_break (GnmPageBreaks *breaks,
1372
GnmPageBreakType type)
1374
GnmPageBreak *pbreak;
1379
g_return_val_if_fail (breaks != NULL, FALSE);
1381
/* Do some simple validation */
1385
if (breaks->details->len == 0 && type != GNM_PAGE_BREAK_NONE)
1386
return gnm_page_breaks_append_break (breaks, pos, type);
1388
for (i = 0; i < breaks->details->len; i++) {
1389
pbreak = &g_array_index (breaks->details, GnmPageBreak, i);
1390
if (pbreak->pos == pos) {
1391
if (type == GNM_PAGE_BREAK_NONE) {
1392
g_array_remove_index (breaks->details, i);
1394
pbreak->type = type;
1397
} else if (pbreak->pos < pos)
1401
if (type == GNM_PAGE_BREAK_NONE)
1406
if ((before + 1) > (int) breaks->details->len)
1407
g_array_append_val (breaks->details, info);
1409
g_array_insert_val (breaks->details, (before + 1), info);
1293
1415
* gnm_page_break_type_from_str
1303
1425
return GNM_PAGE_BREAK_AUTO;
1304
1426
if (0 == g_ascii_strcasecmp (str, "data-slice"))
1305
1427
return GNM_PAGE_BREAK_DATA_SLICE;
1306
return GNM_PAGE_BREAK_AUTO;
1428
if (0 == g_ascii_strcasecmp (str, "none"))
1429
return GNM_PAGE_BREAK_NONE;
1430
return GNM_PAGE_BREAK_NONE;
1436
* Remove all auto page breaks
1441
gnm_page_breaks_clean (GnmPageBreaks *breaks)
1444
for (i = 0; i < breaks->details->len; i++) {
1445
GnmPageBreak *pbreak = &g_array_index (breaks->details,
1447
if (pbreak->type == GNM_PAGE_BREAK_AUTO) {
1448
g_array_remove_index (breaks->details, i);