Skip to content

Commit b8aab06

Browse files
committed
merge, duplicate and rename redone
and workspace is now a plain model
1 parent 99454ac commit b8aab06

19 files changed

+741
-442
lines changed

TODO

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,6 @@
77

88
- major / minor / micro need to be in workspace, as well as root
99

10-
- workspacegroup_top_load() row and column mode are broken
11-
12-
do we need the load_type member in wsgroup? would ModelLoadState be a more
13-
natural place for it?
14-
1510
- when we rename workspaces on load to avoid clashes, could we rewrite
1611
expressions too?
1712

@@ -23,9 +18,6 @@
2318

2419
all the time, is there no neater way to do this?
2520

26-
- make Workspace into a plain model once all the top-level load/save stuff
27-
is moved out
28-
2921
- double-click on tab gutter to make new tab, right-buttn menu with new tab
3022
item
3123

src/column.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,9 @@ column_save_test( Model *model )
194194
{
195195
Column *col = COLUMN( model );
196196
Workspace *ws = col->ws;
197+
Workspacegroup *wsg = workspace_get_workspacegroup( ws );
197198

198-
if( ws->save_type == WORKSPACE_SAVE_SELECTED )
199+
if( wsg->save_type == WORKSPACEGROUP_SAVE_SELECTED )
199200
/* Only save columns containing selected rows.
200201
*/
201202
return( column_map( col,

src/columnview.c

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ columnview_clone_cb( GtkWidget *wid, GtkWidget *host, Columnview *cview )
7272
{
7373
Column *col = COLUMN( VOBJECT( cview )->iobject );
7474
Workspace *ws = col->ws;
75+
Workspacegroup *wsg = workspace_get_workspacegroup( ws );
7576
char *newname = workspace_column_name_new( ws, NULL );
7677
Column *newcol = workspace_column_get( ws, newname );
7778

@@ -83,7 +84,7 @@ columnview_clone_cb( GtkWidget *wid, GtkWidget *host, Columnview *cview )
8384
workspace_deselect_all( ws );
8485
column_select_symbols( col );
8586
workspace_column_select( ws, newcol );
86-
if( !workspace_clone_selected( ws ) )
87+
if( !workspacegroup_selected_duplicate( wsg ) )
8788
iwindow_alert( GTK_WIDGET( cview ), GTK_MESSAGE_ERROR );
8889
workspace_deselect_all( ws );
8990

@@ -99,13 +100,14 @@ columnview_save_as_sub( iWindow *iwnd,
99100
Filesel *filesel = FILESEL( iwnd );
100101
Column *col = COLUMN( client );
101102
Workspace *ws = col->ws;
103+
Workspacegroup *wsg = workspace_get_workspacegroup( ws );
102104
char *filename;
103105

104106
workspace_deselect_all( ws );
105107
column_select_symbols( col );
106108

107109
if( (filename = filesel_get_filename( filesel )) ) {
108-
if( workspace_selected_save( ws, filename ) ) {
110+
if( workspacegroup_selected_save( wsg, filename ) ) {
109111
workspace_deselect_all( ws );
110112
nfn( sys, IWINDOW_YES );
111113
}
@@ -176,6 +178,7 @@ columnview_to_menu_done_cb( iWindow *iwnd, void *client,
176178
{
177179
Column *col = COLUMN( client );
178180
Workspace *ws = col->ws;
181+
Workspacegroup *wsg = workspace_get_workspacegroup( ws );
179182
Stringset *ss = STRINGSET( iwnd );
180183
StringsetChild *name = stringset_child_get( ss, _( "Name" ) );
181184
StringsetChild *toolkit = stringset_child_get( ss, _( "Toolkit" ) );
@@ -197,7 +200,7 @@ columnview_to_menu_done_cb( iWindow *iwnd, void *client,
197200
workspace_deselect_all( ws );
198201
column_select_symbols( col );
199202

200-
if( !workspace_selected_save( ws, file_text ) ) {
203+
if( !workspacegroup_selected_save( wsg, file_text ) ) {
201204
nfn( sys, IWINDOW_ERROR );
202205
return;
203206
}

src/expr.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,13 @@ expr_error_print( Expr *expr, VipsBuf *buf )
6767
tool_error( expr->sym->tool, buf );
6868
else if( expr->row ) {
6969
Workspace *ws = expr->row->ws;
70+
Workspacegroup *wsg = workspace_get_workspacegroup( ws );
7071

7172
vips_buf_appendf( buf, " (" );
7273
row_qualified_name( expr->row, buf );
73-
if( FILEMODEL( ws )->filename )
74+
if( FILEMODEL( wsg )->filename )
7475
vips_buf_appendf( buf, " - %s",
75-
FILEMODEL( ws )->filename );
76+
FILEMODEL( wsg )->filename );
7677
vips_buf_appendf( buf, ")" );
7778
}
7879

src/ferd

Lines changed: 267 additions & 0 deletions
Large diffs are not rendered by default.

src/main.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1477,7 +1477,7 @@ main( int argc, char *argv[] )
14771477
*/
14781478
if( icontainer_get_n_children( ICONTAINER( main_workspaceroot ) ) > 2 &&
14791479
workspace_is_empty( ws ) ) {
1480-
iobject_destroy( IOBJECT( wsg ) );
1480+
IDESTROY( wsg );
14811481
wsg = NULL;
14821482
ws = NULL;
14831483
}

src/mainw.c

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -621,10 +621,12 @@ static void
621621
mainw_selected_duplicate_action_cb( GtkAction *action, Mainw *mainw )
622622
{
623623
Workspace *ws;
624+
Workspacegroup *wsg;
624625

625626
progress_begin();
626627
if( (ws = mainw_get_workspace( mainw )) &&
627-
!workspace_clone_selected( ws ) )
628+
(wsg = workspace_get_workspacegroup( ws )) &&
629+
!workspacegroup_selected_duplicate( wsg ) )
628630
iwindow_alert( GTK_WIDGET( mainw ), GTK_MESSAGE_ERROR );
629631
progress_end();
630632
}
@@ -1005,9 +1007,13 @@ mainw_workspace_merge_fn( Filesel *filesel,
10051007
{
10061008
Mainw *mainw = MAINW( a );
10071009
Workspace *ws;
1010+
Workspacegroup *wsg;
10081011

1009-
if( (ws = mainw_get_workspace( mainw )) &&
1010-
!workspace_merge_file( ws, filename, NULL ) )
1012+
if( !(ws = mainw_get_workspace( mainw )) ||
1013+
!(wsg = workspace_get_workspacegroup( ws )) )
1014+
return( NULL );
1015+
1016+
if( !workspacegroup_merge_file( wsg, filename, NULL ) )
10111017
return( filesel );
10121018

10131019
/* Process some events to make sure we rethink the layout and

src/regionview.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -813,7 +813,6 @@ static void
813813
regionview_model_update( Regionview *regionview )
814814
{
815815
Classmodel *classmodel = regionview->classmodel;
816-
Imagepresent *ip = regionview->ip;
817816
Rect *model_area = regionview_get_model( regionview );
818817

819818
#ifdef DEBUG
@@ -898,6 +897,7 @@ regionview_clone_cb( GtkWidget *menu, Regionview *regionview, Imagepresent *ip )
898897
{
899898
Row *row = HEAPMODEL( regionview->classmodel )->row;
900899
Workspace *ws = row->top_col->ws;
900+
Workspacegroup *wsg = workspace_get_workspacegroup( ws );
901901

902902
if( row->top_row != row ) {
903903
error_top( _( "Can't duplicate." ) );
@@ -909,7 +909,7 @@ regionview_clone_cb( GtkWidget *menu, Regionview *regionview, Imagepresent *ip )
909909

910910
workspace_deselect_all( ws );
911911
row_select( row );
912-
if( !workspace_clone_selected( ws ) )
912+
if( !workspacegroup_selected_duplicate( wsg ) )
913913
iwindow_alert( GTK_WIDGET( regionview ), GTK_MESSAGE_ERROR );
914914
workspace_deselect_all( ws );
915915

src/row.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -824,13 +824,15 @@ row_save_test( Model *model )
824824
{
825825
Row *row = ROW( model );
826826
Workspace *ws = row->ws;
827+
Workspacegroup *wsg = workspace_get_workspacegroup( ws );
828+
827829
gboolean save;
828830

829831
if( row == row->top_row ) {
830832
/* This is a top-level row ... save unless we're in
831833
* only-save-selected mode.
832834
*/
833-
if( ws->save_type == WORKSPACE_SAVE_SELECTED )
835+
if( wsg->save_type == WORKSPACEGROUP_SAVE_SELECTED )
834836
save = row->selected;
835837
else
836838
save = TRUE;
@@ -846,7 +848,6 @@ row_save_test( Model *model )
846848
(icontainer_map_fn) row_calculate_to_save,
847849
NULL );
848850
}
849-
850851
}
851852
else
852853
save = row->to_save;

src/rowview.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@ rowview_clone_cb( GtkWidget *menu, GtkWidget *button, Rowview *rview )
318318
{
319319
Row *row = ROW( VOBJECT( rview )->iobject );
320320
Workspace *ws = row->top_col->ws;
321+
Workspacegroup *wsg = workspace_get_workspacegroup( ws );
321322

322323
/* Only allow clone of top level rows.
323324
*/
@@ -331,7 +332,7 @@ rowview_clone_cb( GtkWidget *menu, GtkWidget *button, Rowview *rview )
331332

332333
workspace_deselect_all( ws );
333334
row_select( row );
334-
if( !workspace_clone_selected( ws ) )
335+
if( !workspacegroup_selected_duplicate( wsg ) )
335336
iwindow_alert( button, GTK_MESSAGE_ERROR );
336337
workspace_deselect_all( ws );
337338

src/tool.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -825,7 +825,7 @@ tool_new_sym( Toolkit *kit, int pos, Symbol *sym )
825825
sym->tool = NULL;
826826
tool->sym = NULL;
827827

828-
iobject_destroy( IOBJECT( tool ) );
828+
IDESTROY( tool );
829829
}
830830

831831
tool = TOOL( g_object_new( TYPE_TOOL, NULL ) );

src/toolview.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,10 +105,11 @@ static void
105105
toolview_activate_cb( GtkWidget *widget, Toolitem *toolitem )
106106
{
107107
Workspace *ws = item_get_workspace( widget );
108+
Workspacegroup *wsg = workspace_get_workspacegroup( ws );
108109

109110
switch( toolitem->tool->type ) {
110111
case TOOL_DIA:
111-
if( !workspace_merge_file( ws,
112+
if( !workspacegroup_merge_file( wsg,
112113
FILEMODEL( toolitem->tool )->filename, NULL ) )
113114
iwindow_alert( widget, GTK_MESSAGE_ERROR );
114115
symbol_recalculate_all();

src/watch.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,8 @@ watchgroup_save( Watchgroup *watchgroup )
145145
Workspace *ws;
146146

147147
if( (ws = watchgroup_get_workspace( watchgroup )) ) {
148-
Filemodel *filemodel = FILEMODEL( ws );
148+
Workspacegroup *wsg = workspace_get_workspacegroup( ws );
149+
Filemodel *filemodel = FILEMODEL( wsg );
149150

150151
if( filemodel->modified ) {
151152
symbol_recalculate_all();
@@ -179,6 +180,7 @@ watchgroup_dirty( Watchgroup *watchgroup )
179180
/* Find the preferences workspace.
180181
*/
181182
if( (ws = watchgroup_get_workspace( watchgroup )) ) {
183+
Workspacegroup *wsg = workspace_get_workspacegroup( ws );
182184
Filemodel *filemodel = FILEMODEL( ws );
183185

184186
/* Mark ws dirty, start save timer.

0 commit comments

Comments
 (0)