[q-lang-cvs] qcalc qcalc.q,1.104,1.105
Brought to you by:
agraef
|
From: Albert G. <ag...@us...> - 2007-11-07 08:17:26
|
Update of /cvsroot/q-lang/qcalc In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv522 Modified Files: qcalc.q Log Message: code cleanup, bugfixes, code to debug vanishing gui elements Index: qcalc.q =================================================================== RCS file: /cvsroot/q-lang/qcalc/qcalc.q,v retrieving revision 1.104 retrieving revision 1.105 diff -C2 -d -r1.104 -r1.105 *** qcalc.q 7 Nov 2007 05:34:08 -0000 1.104 --- qcalc.q 7 Nov 2007 08:17:18 -0000 1.105 *************** *** 404,412 **** = CELLS := Xs; insert_cells ((I,J),X) ! = CELLS := insert (get CELLS) ((I,J),X); insert_cells Xs:List = CELLS := foldl insert (get CELLS) Xs; delete_cells (I,J) ! = CELLS := delete (get CELLS) (I,J); delete_cells Xs:List = CELLS := foldl delete (get CELLS) Xs; --- 404,412 ---- = CELLS := Xs; insert_cells ((I,J),X) ! = chk (I,J) || CELLS := insert (get CELLS) ((I,J),X); insert_cells Xs:List = CELLS := foldl insert (get CELLS) Xs; delete_cells (I,J) ! = chk (I,J) || CELLS := delete (get CELLS) (I,J); delete_cells Xs:List = CELLS := foldl delete (get CELLS) Xs; *************** *** 416,428 **** = EVAL := Xs; insert_eval ((I,J),X) ! = EVAL := insert (get EVAL) ((I,J),X); insert_eval Xs:List = EVAL := foldl insert (get EVAL) Xs; delete_eval (I,J) ! = EVAL := delete (get EVAL) (I,J); delete_eval Xs:List = EVAL := foldl delete (get EVAL) Xs; filter_eval P = EVAL := hdict $ filter P $ list $ get EVAL; /* Dialogs. */ --- 416,432 ---- = EVAL := Xs; insert_eval ((I,J),X) ! = chk (I,J) || EVAL := insert (get EVAL) ((I,J),X); insert_eval Xs:List = EVAL := foldl insert (get EVAL) Xs; delete_eval (I,J) ! = chk (I,J) || EVAL := delete (get EVAL) (I,J); delete_eval Xs:List = EVAL := foldl delete (get EVAL) Xs; filter_eval P = EVAL := hdict $ filter P $ list $ get EVAL; + chk (I,J) = printf "warning: overwriting GUI object %s at %s\n" + (str X,str (I,J)) + where X:QtObject = get CELLS!(I,J); + /* Dialogs. */ *************** *** 593,602 **** set_status HAVE_UNDO EDIT_UNDO || set_status HAVE_REDO EDIT_REDO || - /* KLUDGE ALERT: We sometimes don't get a proper callback if - the user navigates away (using the mouse) from a formula - cell being edited, so make sure that we properly finalize - the edit here. */ - if not EDITING and then neq () (get LAST_EDIT) then - finish_edit true (get LAST_EDIT) || check_focus 0 (qt APP "focusWidget" ()) || digest_loop --- 597,600 ---- *************** *** 680,686 **** process_update2 (I,J) S = gui_setval X S || X where X:QtObject = get CELLS!(I,J); ! = clear_cell (I,J) || set_cell (I,J) S || ! if null S0 then delete_cells (I,J) else insert_cells ((I,J),S0) || delete_eval (I,J) || S0 where (S0,S1) = unquote S; --- 678,684 ---- process_update2 (I,J) S = gui_setval X S || X where X:QtObject = get CELLS!(I,J); ! = if null S0 then delete_cells (I,J) else insert_cells ((I,J),S0) || + clear_cell (I,J) || set_cell (I,J) S || delete_eval (I,J) || S0 where (S0,S1) = unquote S; *************** *** 792,795 **** --- 790,795 ---- /* Some convenience functions for accessing the table. */ + current_edited = (qt TABLE "currEditRow" (),qt TABLE "currEditCol" ()) + if qt TABLE "isEditing" (); current_cell = (current_row,current_col); current_row = qt TABLE "currentRow" (); *************** *** 799,812 **** clear_cell (I,J) - /* KLUDGE: Stop editing a GUI element before we clear the cell. - Otherwise the cell seems to be stuck in editing mode (Qt bug?). */ - // This doesn't appear to work (causes segfaults). Disabled for now. - // = qt TABLE "clearCellWidget" (I,J) || - // qt TABLE "takeItem" X || - // qt TABLE "setEditMode" (qt_val "QTable" "NotEditing",I,J) || - // //if qt TABLE "isEditing" () then puts "PANIC!\n" || - // fail // falls through to default case below - // where X:QtObject = get CELLS!(I,J) - // if qt TABLE "isEditing" () and then ((I,J)=current_cell); = qt TABLE "clearCell" (I,J); --- 799,802 ---- *************** *** 904,918 **** check_editing ! where (I,J) = current_cell: = // Try to force the table out of edit mode when a GUI // element is being edited. ! if qt TABW "currentPageIndex" () = 0 then ! qt TABLE "setEditMode" (I,J,qt_val "QTable" "NotEditing") ! if qt TABLE "isEditing" () and then is_gui_elem (I,J); = EDITED := true || recursive (qt TABLE "endEdit" (I,J,true,false)) || ! finish_edit true (I,J) ! if qt TABLE "isEditing" (); ! = finish_edit true (I,J) where (I,J) = get LAST_EDIT; /* Various status updates. */ --- 894,907 ---- check_editing ! where (I,J) = current_edited: = // Try to force the table out of edit mode when a GUI // element is being edited. ! qt TABLE "setEditMode" (qt_val "QTable" "NotEditing",I,J) ! if is_gui_elem (I,J); = EDITED := true || recursive (qt TABLE "endEdit" (I,J,true,false)) || ! finish_edit true (I,J); ! where (I,J) = get LAST_EDIT: ! = finish_edit true (I,J); /* Various status updates. */ *************** *** 2852,2864 **** process1 (CELLS,EVAL) (I,J,S) ! = clear_cell (I,J) || ! (insert CELLS ((I,J),true),insert EVAL (I,J;S,'X,DEPS)) where ("=",S) = (hd S,trim (tl S)), ! 'X = parse S, DEPS = deps 'X; ! = clear_cell (I,J) || set_cell (I,J) S || ! (insert CELLS ((I,J),true),delete EVAL (I,J)) if not null S; ! = clear_cell (I,J) || ! (delete CELLS (I,J),delete EVAL (I,J)) otherwise; --- 2841,2856 ---- process1 (CELLS,EVAL) (I,J,S) ! = clear_cell (I,J) || (CELLS,EVAL) where ("=",S) = (hd S,trim (tl S)), ! 'X = parse S, DEPS = deps 'X, ! (CELLS,EVAL) = ! (insert CELLS ((I,J),true),insert EVAL (I,J;S,'X,DEPS)); ! = clear_cell (I,J) || set_cell (I,J) S || (CELLS,EVAL) ! where (CELLS,EVAL) = ! (insert CELLS ((I,J),true),delete EVAL (I,J)) if not null S; ! = clear_cell (I,J) || (CELLS,EVAL) ! where (CELLS,EVAL) = ! (delete CELLS (I,J),delete EVAL (I,J)) otherwise; *************** *** 2872,2886 **** process2 (CELLS,EVAL) (I,J,S) = (CELLS,EVAL) if is_qt_object S; ! = clear_cell (I,J) || ! (insert CELLS ((I,J),true),insert EVAL (I,J;S,'X,DEPS)) where ("=",S) = (hd S,trim (tl S)), ! 'X = parse S, DEPS = deps 'X; ! = clear_cell (I,J) || set_cell (I,J) S1 || ! (insert CELLS ((I,J),S0),delete EVAL (I,J)) where S0 = CELLS!(I,J), ! (S0,S1) = if isstr S0 then unquote S else (true,S) if not null S; ! = clear_cell (I,J) || ! (delete CELLS (I,J),delete EVAL (I,J)) otherwise; --- 2864,2881 ---- process2 (CELLS,EVAL) (I,J,S) = (CELLS,EVAL) if is_qt_object S; ! = clear_cell (I,J) || (CELLS,EVAL) where ("=",S) = (hd S,trim (tl S)), ! 'X = parse S, DEPS = deps 'X, ! (CELLS,EVAL) = ! (insert CELLS ((I,J),true),insert EVAL (I,J;S,'X,DEPS)); ! = clear_cell (I,J) || set_cell (I,J) S1 || (CELLS,EVAL) where S0 = CELLS!(I,J), ! (S0,S1) = if isstr S0 then unquote S else (true,S), ! (CELLS,EVAL) = ! (insert CELLS ((I,J),S0),delete EVAL (I,J)) if not null S; ! = clear_cell (I,J) || (CELLS,EVAL) ! where (CELLS,EVAL) = ! (delete CELLS (I,J),delete EVAL (I,J)) otherwise; |