Only in abigoto/src: Linux_2.3.36_i386_DBG diff -u -r -x CVS abicommit/src/af/xap/Makefile abigoto/src/af/xap/Makefile --- abicommit/src/af/xap/Makefile Sun May 28 22:22:09 2000 +++ abigoto/src/af/xap/Makefile Thu Jun 1 00:56:53 2000 @@ -47,9 +47,10 @@ # THESE ARE OBJECTS EXCLUSIVE TO THE UNIX FRONT-END ifeq ($(ABI_FE), Unix) -PLATFORM_OBJS += $(OBJDIR)/xap_$(ABI_FE)Font.$(OBJ_SUFFIX) \ - $(OBJDIR)/xap_$(ABI_FE)FontManager.$(OBJ_SUFFIX) \ +PLATFORM_OBJS += $(OBJDIR)/xap_$(ABI_FE)Font.$(OBJ_SUFFIX) \ + $(OBJDIR)/xap_$(ABI_FE)FontManager.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_$(ABI_FE)FontXLFD.$(OBJ_SUFFIX) \ + $(OBJDIR)/xap_$(ABI_FE)GtkTricks.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_$(ABI_FE)PSFont.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_$(ABI_FE)PSGenerate.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_$(ABI_FE)PSParseAFM.$(OBJ_SUFFIX) \ @@ -58,7 +59,7 @@ endif ifeq ($(ABI_FE), Win32) -PLATFORM_OBJS += $(OBJDIR)/xap_$(ABI_FE)Slurp.$(OBJ_SUFFIX) \ +PLATFORM_OBJS += $(OBJDIR)/xap_$(ABI_FE)Slurp.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_$(ABI_FE)PreviewWidget.$(OBJ_SUFFIX) endif @@ -74,17 +75,17 @@ OBJS= $(PLATFORM_OBJS) \ $(OBJDIR)/xad_Document.$(OBJ_SUFFIX) \ - $(OBJDIR)/xap_App.$(OBJ_SUFFIX) \ + $(OBJDIR)/xap_App.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_Args.$(OBJ_SUFFIX) \ - $(OBJDIR)/xap_Clipboard.$(OBJ_SUFFIX) \ + $(OBJDIR)/xap_Clipboard.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_Dialog.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_DialogFactory.$(OBJ_SUFFIX) \ - $(OBJDIR)/xap_Dictionary.$(OBJ_SUFFIX) \ - $(OBJDIR)/xap_Dlg_About.$(OBJ_SUFFIX) \ - $(OBJDIR)/xap_Dlg_FileOpenSaveAs.$(OBJ_SUFFIX) \ + $(OBJDIR)/xap_Dictionary.$(OBJ_SUFFIX) \ + $(OBJDIR)/xap_Dlg_About.$(OBJ_SUFFIX) \ + $(OBJDIR)/xap_Dlg_FileOpenSaveAs.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_Dlg_FontChooser.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_Dlg_MessageBox.$(OBJ_SUFFIX) \ - $(OBJDIR)/xap_Dlg_Print.$(OBJ_SUFFIX) \ + $(OBJDIR)/xap_Dlg_Print.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_Dlg_WindowMore.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_Dlg_Zoom.$(OBJ_SUFFIX) \ $(OBJDIR)/xap_Dlg_Insert_Symbol.$(OBJ_SUFFIX) \ diff -u -r -x CVS abicommit/src/af/xap/unix/Makefile abigoto/src/af/xap/unix/Makefile --- abicommit/src/af/xap/unix/Makefile Wed Apr 26 15:07:23 2000 +++ abigoto/src/af/xap/unix/Makefile Thu Jun 1 00:56:53 2000 @@ -40,6 +40,7 @@ xap_UnixFont.cpp \ xap_UnixFontManager.cpp \ xap_UnixFrame.cpp \ + xap_UnixGtkTricks.cpp \ xap_UnixToolbar_Icons.cpp \ xap_UnixPSFont.cpp \ xap_UnixPSGenerate.cpp \ Only in abigoto/src/af/xap/unix: xap_UnixGtkTricks.cpp Only in abigoto/src/af/xap/unix: xap_UnixGtkTricks.h diff -u -r -x CVS abicommit/src/text/fmt/xp/fp_Line.cpp abigoto/src/text/fmt/xp/fp_Line.cpp --- abicommit/src/text/fmt/xp/fp_Line.cpp Thu May 11 16:33:15 2000 +++ abigoto/src/text/fmt/xp/fp_Line.cpp Thu Jun 1 01:57:28 2000 @@ -948,11 +948,11 @@ UT_Bool fp_Line::containsForcedColumnBreak(void) const { - if (!isEmpty()) + if(!isEmpty()) { fp_Run* pRun = getLastRun(); if (pRun->getType() == FPRUN_FORCEDCOLUMNBREAK) - { + { return UT_TRUE; } } @@ -1295,4 +1295,5 @@ } + diff -u -r -x CVS abicommit/src/text/fmt/xp/fv_View.cpp abigoto/src/text/fmt/xp/fv_View.cpp --- abicommit/src/text/fmt/xp/fv_View.cpp Thu Jun 1 02:06:57 2000 +++ abigoto/src/text/fmt/xp/fv_View.cpp Thu Jun 1 00:56:55 2000 @@ -1029,14 +1029,14 @@ { PT_DocPosition iPoint1 = getPoint(); if ( iPoint1 == iPoint ) - { + { if(!_charMotion(bForward, count)) - { - _setPoint(iPoint); - notifyListeners(AV_CHG_MOTION); - return; - } - } + { + _setPoint(iPoint); + notifyListeners(AV_CHG_MOTION); + return; + } + } _updateInsertionPoint(); } notifyListeners(AV_CHG_MOTION); @@ -2273,6 +2273,25 @@ UT_sint32 yPoint; UT_sint32 iPointHeight; + + fp_Page* pOldPage = _getCurrentPage(); + + // try to locate next/prev page + fp_Page* pPage = (bNext ? pOldPage->getNext() : pOldPage->getPrev()); + + // if couldn't move, go to top of this page instead + if (!pPage) + pPage = pOldPage; + + _moveInsPtToPage(pPage); +} + +fp_Page *FV_View::_getCurrentPage(void) +{ + UT_sint32 xPoint; + UT_sint32 yPoint; + UT_sint32 iPointHeight; + /* This function moves the IP to the beginning of the previous or next page (ie not this one). @@ -2287,20 +2306,33 @@ fp_Container* pOldContainer = pOldLine->getContainer(); fp_Page* pOldPage = pOldContainer->getPage(); - // try to locate next/prev page - fp_Page* pPage = (bNext ? pOldPage->getNext() : pOldPage->getPrev()); + return pOldPage; +} - // if couldn't move, go to top of this page instead - if (!pPage) - pPage = pOldPage; +void FV_View::_moveInsPtNthPage(UT_uint32 n) +{ + fp_Page *page = m_pLayout->getFirstPage(); + + if (n > m_pLayout->countPages ()) + n = m_pLayout->countPages (); + + for (UT_uint32 i = 1; i < n; i++) + { + page = page->getNext (); + } + + _moveInsPtToPage(page); +} +void FV_View::_moveInsPtToPage(fp_Page *page) +{ // move to the first pos on this page - PT_DocPosition iNewPoint = pPage->getFirstLastPos(UT_TRUE); + PT_DocPosition iNewPoint = page->getFirstLastPos(UT_TRUE); _setPoint(iNewPoint, UT_FALSE); // explicit vertical scroll to top of page UT_sint32 iPageOffset; - getPageYOffset(pPage, iPageOffset); + getPageYOffset(page, iPageOffset); iPageOffset -= fl_PAGEVIEW_PAGE_SEP /2; iPageOffset -= m_yScrollOffset; @@ -2308,7 +2340,7 @@ UT_Bool bVScroll = UT_FALSE; if (iPageOffset < 0) { - cmdScroll(AV_SCROLLCMD_LINEUP, (UT_uint32) (-(iPageOffset))); + cmdScroll(AV_SCROLLCMD_LINEUP, (UT_uint32) (-iPageOffset)); bVScroll = UT_TRUE; } else if (iPageOffset > 0) @@ -2735,34 +2767,150 @@ // ---------------- start goto --------------- -UT_Bool FV_View::gotoTarget(FV_JumpTarget /* type */, UT_UCSChar * /* data */) +UT_Bool FV_View::gotoTarget(AP_JumpTarget type, UT_UCSChar *data) { - UT_ASSERT(UT_NOT_IMPLEMENTED); - UT_ASSERT(m_pLayout); + UT_Bool inc = UT_FALSE; + UT_Bool dec = UT_FALSE; + PT_DocPosition offset = 0; - // TODO: We need a Unicode atol/strtol. - - /* - char * numberString = (char *) calloc(UT_UCS_strlen(m_targetData) + 1, sizeof(char)); + char * numberString = (char *) calloc(UT_UCS_strlen(data) + 1, sizeof(char)); UT_ASSERT(numberString); - UT_UCS_strcpy_to_char(numberString, m_targetData); - - UT_uint32 pageNumber = atol(numberString); + UT_UCS_strcpy_to_char(numberString, data); + + switch (numberString[0]) + { + case '+': + inc = UT_TRUE; + numberString++; + break; + case '-': + dec = UT_TRUE; + numberString++; + break; + } + + UT_uint32 number = atol(numberString); + + if (dec || inc) + numberString--; FREEP(numberString); - */ // check for range -// if (pageNumber < 0 || pageNumber > (UT_uint32) m_pLayout->countPages()) -// return UT_FALSE; + // if (number < 0 || number > (UT_uint32) m_pLayout->countPages()) + // return UT_FALSE; - // get the right page -// fp_Page * page = m_pLayout->getNthPage(pageNumber); -// UT_ASSERT(page); + offset = _findGetCurrentOffset (); + + switch (type) + { + case AP_JUMPTARGET_PAGE: + { + if (!inc && !dec) + _moveInsPtNthPage (number); + else + { + fp_Page* pOldPage = _getCurrentPage(); + fp_Page* pPage; + + if (inc) // TODO: What if number passes the number of pages? + for (UT_uint32 i = 0; i < number; i++) + pPage = pOldPage->getNext(); + else + for (UT_uint32 i = 0; i < number; i++) + pPage = pOldPage->getPrev(); + + if (!pPage) + pPage = pOldPage; + + _moveInsPtToPage(pPage); + } + + break; + } + case AP_JUMPTARGET_LINE: + if (inc || dec) + { + UT_Bool bNext; + + if (inc) + bNext = UT_TRUE; + else + bNext = UT_FALSE; + + for (UT_uint32 i = 0; i < number; i++) + _moveInsPtNextPrevLine (bNext); // HACK: A like the quick hacks... :) + } + else + { + UT_uint32 line = 0; + UT_sint32 tmpx, tmpy; + fp_Line *pLine; + fp_Line *pOldLine; + + fl_SectionLayout * pSL = m_pLayout->getFirstSection(); + fl_BlockLayout * pBL = pSL->getFirstBlock(); + pLine = pBL->getFirstLine(); + + for (UT_uint32 i = 1; i < number; i++) + { + pOldLine = pLine; + + if ((pLine = pLine->getNext ()) == NULL) + { + if ((pBL = pBL->getNext ()) == NULL) + { + if ((pSL = pSL->getNext ()) == NULL) + { + pLine = pOldLine; + break; + } + else + pBL = pSL->getFirstBlock (); + } + else + pLine = pBL->getFirstLine (); + } + } + + UT_sint32 iPageOffset; + fp_Container* pOldContainer = pLine->getContainer(); + pOldContainer->getOffsets(pLine, tmpx, tmpy); + + fp_Page* pOldPage = pOldContainer->getPage(); + getPageYOffset(pOldPage, iPageOffset); + tmpy += iPageOffset - m_yScrollOffset; + + UT_sint32 xClick, yClick; + PT_DocPosition iNewPoint; + UT_Bool bBOL, bEOL; + fp_Page* pPage = _getPageForXY(tmpx, tmpy, xClick, yClick); + pPage->mapXYToPosition(xClick, yClick, iNewPoint, bBOL, bEOL); + + _setPoint(iNewPoint, bEOL); + } + break; + case AP_JUMPTARGET_PICTURE: + // TODO + break; + default: + // TODO + ; + } - // peek inside the page - // ... + if (isSelectionEmpty()) + { + if (!_ensureThatInsertionPointIsOnScreen()) + { + _fixInsertionPointCoords(); + _drawInsertionPoint(); + } + } + else + { + _ensureThatInsertionPointIsOnScreen(); + } return UT_FALSE; } diff -u -r -x CVS abicommit/src/text/fmt/xp/fv_View.h abigoto/src/text/fmt/xp/fv_View.h --- abicommit/src/text/fmt/xp/fv_View.h Sun May 28 22:22:09 2000 +++ abigoto/src/text/fmt/xp/fv_View.h Thu Jun 1 01:01:04 2000 @@ -27,6 +27,10 @@ #include "xav_View.h" #include "pt_Types.h" #include "gr_DrawArgs.h" +#include "ev_EditBits.h" +#include "ie_types.h" +#include "xap_Prefs.h" +#include "ap_Dialog_Goto.h" // number of milliseconds between cursor blinks const int AUTO_DRAW_POINT = 600; @@ -58,12 +62,6 @@ FV_DOCPOS_BOW, FV_DOCPOS_EOW_MOVE, FV_DOCPOS_EOW_SELECT // word } FV_DocPos; -typedef enum _FVJumpTarget -{ - FV_JUMPTARGET_PAGE, // beginning of page - FV_JUMPTARGET_LINE // beginning of line -} FV_JumpTarget; - struct fv_ChangeState { UT_Bool bUndo; @@ -198,8 +196,7 @@ // ---------------------- - // goto -- this is really not implemented - UT_Bool gotoTarget(FV_JumpTarget type, UT_UCSChar * data); + UT_Bool gotoTarget(AP_JumpTarget type, UT_UCSChar * data); void changeNumColumns(UT_uint32 iNumColumns); @@ -249,6 +246,9 @@ UT_Bool _ensureThatInsertionPointIsOnScreen(void); void _moveInsPtNextPrevPage(UT_Bool bNext); void _moveInsPtNextPrevLine(UT_Bool bNext); + fp_Page * _getCurrentPage(void); + void _moveInsPtNthPage(UT_uint32 n); + void _moveInsPtToPage(fp_Page *page); PT_DocPosition _getDocPosFromPoint(PT_DocPosition iPoint, FV_DocPos dp, UT_Bool bKeepLooking=UT_TRUE); PT_DocPosition _getDocPos(FV_DocPos dp, UT_Bool bKeepLooking=UT_TRUE); diff -u -r -x CVS abicommit/src/wp/ap/Makefile abigoto/src/wp/ap/Makefile --- abicommit/src/wp/ap/Makefile Sun May 28 22:22:10 2000 +++ abigoto/src/wp/ap/Makefile Thu Jun 1 00:56:55 2000 @@ -32,6 +32,7 @@ $(OBJDIR)/ap_$(ABI_FE)Dialog_Break.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_$(ABI_FE)Dialog_WordCount.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_$(ABI_FE)Dialog_Field.$(OBJ_SUFFIX) \ + $(OBJDIR)/ap_$(ABI_FE)Dialog_Goto.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_$(ABI_FE)Dialog_Insert_DateTime.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_$(ABI_FE)Dialog_Options.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_$(ABI_FE)Dialog_Paragraph.$(OBJ_SUFFIX) \ @@ -68,6 +69,7 @@ $(OBJDIR)/ap_Dialog_Break.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_Dialog_WordCount.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_Dialog_Field.$(OBJ_SUFFIX) \ + $(OBJDIR)/ap_Dialog_Goto.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_Dialog_Insert_DateTime.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_Dialog_Options.$(OBJ_SUFFIX) \ $(OBJDIR)/ap_Dialog_Paragraph.$(OBJ_SUFFIX) \ diff -u -r -x CVS abicommit/src/wp/ap/unix/Makefile abigoto/src/wp/ap/unix/Makefile --- abicommit/src/wp/ap/unix/Makefile Wed Apr 26 15:07:23 2000 +++ abigoto/src/wp/ap/unix/Makefile Thu Jun 1 00:56:55 2000 @@ -33,6 +33,7 @@ ap_$(ABI_FE)DialogFactory.cpp \ ap_$(ABI_FE)Dialog_Break.cpp \ ap_$(ABI_FE)Dialog_Field.cpp \ + ap_$(ABI_FE)Dialog_Goto.cpp \ ap_$(ABI_FE)Dialog_Insert_DateTime.cpp \ ap_$(ABI_FE)Dialog_Options.cpp \ ap_$(ABI_FE)Dialog_Paragraph.cpp \ diff -u -r -x CVS abicommit/src/wp/ap/unix/ap_UnixDialog_All.h abigoto/src/wp/ap/unix/ap_UnixDialog_All.h --- abicommit/src/wp/ap/unix/ap_UnixDialog_All.h Sun May 28 22:22:10 2000 +++ abigoto/src/wp/ap/unix/ap_UnixDialog_All.h Thu Jun 1 01:07:35 2000 @@ -45,6 +45,7 @@ # include "ap_UnixDialog_Replace.h" # include "ap_UnixDialog_Break.h" +# include "ap_UnixDialog_Goto.h" # include "ap_UnixDialog_Paragraph.h" # include "ap_UnixDialog_Options.h" # include "ap_UnixDialog_Spell.h" @@ -86,6 +87,7 @@ DeclareDialog(AP_DIALOG_ID_REPLACE, AP_UnixGnomeDialog_Replace) DeclareDialog(AP_DIALOG_ID_FIND, AP_UnixGnomeDialog_Replace) + DeclareDialog(AP_DIALOG_ID_GOTO, AP_UnixDialog_Goto) DeclareDialog(AP_DIALOG_ID_BREAK, AP_UnixGnomeDialog_Break) DeclareDialog(AP_DIALOG_ID_SPELL, AP_UnixDialog_Spell) DeclareDialog(AP_DIALOG_ID_PARAGRAPH, AP_UnixGnomeDialog_Paragraph) @@ -110,6 +112,7 @@ DeclareDialog(AP_DIALOG_ID_REPLACE, AP_UnixDialog_Replace) DeclareDialog(AP_DIALOG_ID_FIND, AP_UnixDialog_Replace) + DeclareDialog(AP_DIALOG_ID_GOTO, AP_UnixDialog_Goto) DeclareDialog(AP_DIALOG_ID_BREAK, AP_UnixDialog_Break) DeclareDialog(AP_DIALOG_ID_SPELL, AP_UnixDialog_Spell) DeclareDialog(AP_DIALOG_ID_PARAGRAPH, AP_UnixDialog_Paragraph) diff -u -r -x CVS abicommit/src/wp/ap/unix/ap_UnixDialog_Goto.cpp abigoto/src/wp/ap/unix/ap_UnixDialog_Goto.cpp --- abicommit/src/wp/ap/unix/ap_UnixDialog_Goto.cpp Thu May 11 16:33:15 2000 +++ abigoto/src/wp/ap/unix/ap_UnixDialog_Goto.cpp Thu Jun 1 01:09:40 2000 @@ -28,11 +28,14 @@ #include "xap_Dialog_Id.h" #include "xap_UnixApp.h" #include "xap_UnixFrame.h" +#include "xap_UnixGtkTricks.h" #include "ap_Dialog_Id.h" #include "ap_Dialog_Goto.h" #include "ap_UnixDialog_Goto.h" +#include "fv_View.h" + /*****************************************************************/ XAP_Dialog * AP_UnixDialog_Goto::static_constructor(XAP_DialogFactory * pFactory, XAP_Dialog_Id id) @@ -45,268 +48,293 @@ XAP_Dialog_Id id) : AP_Dialog_Goto(pDlgFactory,id) { - - m_gotoString = NULL; - m_replaceString = NULL; - m_matchCase = UT_TRUE; } AP_UnixDialog_Goto::~AP_UnixDialog_Goto(void) { } -static void s_gotoCallback(GtkWidget * widget, AP_UnixDialog_Goto * repDialog) +static void s_goto(const char *number, AP_UnixDialog_Goto * me) { - UT_ASSERT(widget); - UT_ASSERT(repDialog); + UT_UCSChar *ucsnumber = (UT_UCSChar *) malloc (sizeof (UT_UCSChar) * (strlen(number) + 1)); + UT_UCS_strcpy_char (ucsnumber, number); + FV_View *view; + int target = me->getSelectedRow (); + + UT_ASSERT(view = me->getView ()); - char * findEntryText; + view->gotoTarget ((AP_JumpTarget) target, ucsnumber); + free (ucsnumber); +} - findEntryText = (char *) gtk_entry_get_text(GTK_ENTRY(repDialog->findEntry)); - - UT_DEBUGMSG(("Find entry contents: \"%s\"\n", ((findEntryText) ? findEntryText : "NULL"))); +static void s_gotoClicked(GtkWidget * widget, AP_UnixDialog_Goto * me) +{ + GtkWidget *mw = me->m_wMainWindow; + GtkWidget *table = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (mw), "table")); + GtkWidget *entry = GTK_WIDGET (gtk_object_get_data (GTK_OBJECT (table), "entry1")); + char *number = gtk_entry_get_text (GTK_ENTRY (entry)); - UT_UCSChar * findString; + s_goto ((const char *) number, me); +} - UT_UCS_cloneString_char(&findString, findEntryText); - - repDialog->setFindString(findString); - - repDialog->findNext(); +static void s_nextClicked(GtkWidget * widget, AP_UnixDialog_Goto * me) +{ + s_goto ("+1", me); +} - FREEP(findString); +static void s_prevClicked(GtkWidget * widget, AP_UnixDialog_Goto * me) +{ + s_goto ("-1", me); } -static void s_closeCallback(GtkWidget * object, GtkWidget * data) +static void s_closeClicked(GtkWidget * object, GtkWidget * data) { UT_ASSERT(object); gtk_main_quit(); } -static void s_delete_clicked(GtkWidget * widget, gpointer data, gpointer extra) +static void s_deleteClicked(GtkWidget * widget, gpointer data) { - // just quit out of the dialog +// AP_UnixDialog_Goto *dlg = (AP_UnixDialog_Goto *) data; +// UT_ASSERT(dlg); +// dlg->event_WindowDelete(); gtk_main_quit(); } -void AP_UnixDialog_Goto::runModeless(XAP_Frame * pFrame) +void AP_UnixDialog_Goto::s_targetChanged(GtkWidget *clist, gint row, gint column, + GdkEventButton *event, AP_UnixDialog_Goto *me) { - GtkWidget * topLevel; - GtkWidget * vbox; - - GtkWidget * targetList; - GtkWidget * findLabel; - GtkWidget * toggleBox; - GtkWidget * replaceBox; - GtkWidget * replaceLabel; - GtkWidget * separator; - GtkWidget * buttonBox; - GtkWidget * findButton; - GtkWidget * replaceButton; - GtkWidget * replaceAllButton; - GtkWidget * cancelButton; - - // create a top level window, the actual dialog - topLevel = gtk_window_new(GTK_WINDOW_TOPLEVEL); - - connectFocus(GTK_WIDGET(topLevel),pFrame); - gtk_signal_connect_after(GTK_OBJECT(topLevel), - "destroy", - NULL, - NULL); - gtk_signal_connect_after(GTK_OBJECT(topLevel), - "delete_event", - GTK_SIGNAL_FUNC(s_delete_clicked), - NULL); + me->setSelectedRow (row); +} - // don't let user shrink or expand, but auto-size to - // contents initially - gtk_window_set_policy(GTK_WINDOW(topLevel), - FALSE, - FALSE, - TRUE); - - // create a vertical stacked box to put our widgets in - vbox = gtk_vbox_new(FALSE, 0); - gtk_container_add(GTK_CONTAINER(topLevel), vbox); - gtk_widget_show(vbox); - - // create a container for the target list - findBox = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX (vbox), findBox, TRUE, TRUE, 10); - gtk_widget_show(findBox); - - findEntry = gtk_entry_new_with_max_length(50); - gtk_box_pack_end(GTK_BOX(findBox), findEntry, TRUE, TRUE, 10); - gtk_widget_show(findEntry); - - gtk_signal_connect(GTK_OBJECT(findEntry), - "activate", - GTK_SIGNAL_FUNC(FindCallback), - this); +static void s_dataChanged(GtkWidget *widget, gpointer data) +{ + GtkWidget *goto_bt = gtk_lookup_widget (widget, "goto_bt"); + gchar *text = gtk_entry_get_text (GTK_ENTRY (widget)); - // this dialog is persistent, so we set our text to what - // it was last time + if (text[0] == '\0') { - UT_UCSChar * bufferUnicode = getFindString(); - char * bufferNormal = (char *) calloc(UT_UCS_strlen(bufferUnicode) + 1, sizeof(char)); - UT_UCS_strcpy_to_char(bufferNormal, bufferUnicode); - FREEP(bufferUnicode); - - gtk_entry_set_text(GTK_ENTRY(findEntry), bufferNormal); - gtk_entry_select_region(GTK_ENTRY(findEntry), 0, GTK_ENTRY(findEntry)->text_length); - - FREEP(bufferNormal); + gtk_widget_set_sensitive (goto_bt, FALSE); + // TODO } + else + { + // TODO + gtk_widget_set_sensitive (goto_bt, TRUE); + } +} - // create the find label - findLabel = gtk_label_new("Find: "); - gtk_label_set_justify(GTK_LABEL(findLabel), GTK_JUSTIFY_RIGHT); - gtk_widget_set_usize(findLabel, 150, 0); - gtk_box_pack_end(GTK_BOX(findBox), findLabel, TRUE, TRUE, 0); - gtk_widget_show(findLabel); - - // create container for Match Case Toggle - toggleBox = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), toggleBox, TRUE, TRUE, 5); - gtk_widget_show (toggleBox); - - // optional toggle switch for case - matchCaseCheck = gtk_check_button_new_with_label("Match Case"); - gtk_box_pack_end(GTK_BOX(toggleBox), matchCaseCheck, FALSE, TRUE, 0); - gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(matchCaseCheck), m_matchCase); - gtk_widget_show(matchCaseCheck); - - // catch the toggled - gtk_signal_connect(GTK_OBJECT(matchCaseCheck), - "toggled", - GTK_SIGNAL_FUNC(MatchCaseCallback), - (gpointer) this); +void AP_UnixDialog_Goto::setSelectedRow(int row) +{ + m_iRow = row; +} - if (m_id == AP_DIALOG_ID_REPLACE) - { - // container for Replace text field - replaceBox = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), replaceBox, TRUE, TRUE, 5); - gtk_widget_show(replaceBox); +int AP_UnixDialog_Goto::getSelectedRow(void) +{ + return (m_iRow); +} - replaceEntry = gtk_entry_new_with_max_length(50); - - { - UT_UCSChar * bufferUnicode = getReplaceString(); - char * bufferNormal = (char *) calloc(UT_UCS_strlen(bufferUnicode) + 1, sizeof(char)); - UT_UCS_strcpy_to_char(bufferNormal, bufferUnicode); - FREEP(bufferUnicode); - - gtk_entry_set_text(GTK_ENTRY(replaceEntry), bufferNormal); - - FREEP(bufferNormal); - } - - gtk_box_pack_end (GTK_BOX (replaceBox), replaceEntry, TRUE, TRUE, 10); - gtk_widget_show (replaceEntry); - - gtk_signal_connect(GTK_OBJECT(replaceEntry), - "activate", - GTK_SIGNAL_FUNC(ReplaceCallback), - this); - - replaceLabel = gtk_label_new("Replace With: "); - gtk_label_set_justify(GTK_LABEL(replaceLabel), GTK_JUSTIFY_RIGHT); - gtk_widget_set_usize(replaceLabel, 150, 0); - gtk_box_pack_end(GTK_BOX(replaceBox), replaceLabel, TRUE, TRUE, 0); - gtk_widget_show(replaceLabel); - } - - // pretty seperator for the action area - separator = gtk_hseparator_new(); - gtk_box_pack_start(GTK_BOX(vbox), separator, FALSE, TRUE, 5); - gtk_widget_show(separator); +void AP_UnixDialog_Goto::runModal(XAP_Frame * pFrame) +{ + m_wMainWindow = _constructWindow(); + _populateWindowData(); + gtk_grab_add(m_wMainWindow); - // container for buttons - buttonBox = gtk_hbox_new(FALSE, 0); - gtk_box_pack_start(GTK_BOX(vbox), buttonBox, FALSE, TRUE, 5); - gtk_widget_show(buttonBox); - - findButton = gtk_button_new_with_label("Find Next"); - gtk_widget_set_usize(findButton, DEFAULT_BUTTON_WIDTH, 0); - gtk_box_pack_start(GTK_BOX(buttonBox), findButton, FALSE, FALSE, 0); - gtk_widget_show(findButton); - - gtk_signal_connect(GTK_OBJECT(findButton), - "clicked", - GTK_SIGNAL_FUNC(FindCallback), - this); - - if (m_id == AP_DIALOG_ID_REPLACE) - { - replaceButton = gtk_button_new_with_label("Replace"); - gtk_widget_set_usize(replaceButton, DEFAULT_BUTTON_WIDTH, 0); - gtk_box_pack_start(GTK_BOX(buttonBox), replaceButton, FALSE, FALSE, 0); - gtk_widget_show(replaceButton); - - gtk_signal_connect(GTK_OBJECT(replaceButton), - "clicked", - GTK_SIGNAL_FUNC(ReplaceCallback), - this); - - replaceAllButton = gtk_button_new_with_label("Replace All"); - gtk_widget_set_usize(replaceAllButton, DEFAULT_BUTTON_WIDTH, 0); - gtk_box_pack_start(GTK_BOX(buttonBox), replaceAllButton, FALSE, FALSE, 0); - gtk_widget_show(replaceAllButton); - - gtk_signal_connect(GTK_OBJECT(replaceAllButton), - "clicked", - GTK_SIGNAL_FUNC(ReplaceAllCallback), - this); - } - - cancelButton = gtk_button_new_with_label("Cancel"); - gtk_widget_set_usize(cancelButton, DEFAULT_BUTTON_WIDTH, 0); - gtk_box_pack_start(GTK_BOX(buttonBox), cancelButton, FALSE, FALSE, 0); - gtk_widget_show(cancelButton); - - gtk_signal_connect_object(GTK_OBJECT(cancelButton), - "clicked", - GTK_SIGNAL_FUNC(CancelCallback), - GTK_OBJECT(topLevel)); + gtk_main(); - GTK_WIDGET_SET_FLAGS(findButton, GTK_CAN_DEFAULT); + gtk_widget_destroy(m_wMainWindow); +} - if (m_id == AP_DIALOG_ID_REPLACE) - { - GTK_WIDGET_SET_FLAGS(replaceButton, GTK_CAN_DEFAULT); - GTK_WIDGET_SET_FLAGS(replaceAllButton, GTK_CAN_DEFAULT); - } - GTK_WIDGET_SET_FLAGS(cancelButton, GTK_CAN_DEFAULT); - - // get top level window and it's GtkWidget * - XAP_UnixFrame * frame = static_cast(pFrame); - UT_ASSERT(frame); - GtkWidget * parent = frame->getTopLevelWindow(); - UT_ASSERT(parent); - // center it - centerDialog(parent, topLevel); - gtk_window_set_transient_for(GTK_WINDOW(topLevel), GTK_WINDOW(parent)); +GtkWidget * AP_UnixDialog_Goto::_constructWindow(void) +{ + GtkWidget *window1; + GtkWidget *vbox1; + GtkWidget *hseparator1; + GtkWidget *hbuttonbox1; + GtkWidget *button4; + GtkWidget *button5; + GtkWidget *goto_bt; + GtkWidget *close_bt; + GtkWidget *contents; + + window1 = gtk_window_new (GTK_WINDOW_DIALOG); + gtk_object_set_data (GTK_OBJECT (window1), "window1", window1); + gtk_window_set_title (GTK_WINDOW (window1), "Go To..."); + gtk_signal_connect_after(GTK_OBJECT(window1), + "destroy", + GTK_SIGNAL_FUNC(s_deleteClicked), + NULL); + gtk_signal_connect_after(GTK_OBJECT(window1), + "delete_event", + GTK_SIGNAL_FUNC(s_deleteClicked), + NULL); + gtk_window_set_policy(GTK_WINDOW(window1), FALSE, FALSE, TRUE); + + vbox1 = gtk_vbox_new (FALSE, 0); + gtk_widget_ref (vbox1); + gtk_object_set_data_full (GTK_OBJECT (window1), "vbox1", vbox1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (vbox1); + gtk_container_add (GTK_CONTAINER (window1), vbox1); + + contents = _constructWindowContents (); + gtk_widget_ref (contents); + gtk_object_set_data_full (GTK_OBJECT (window1), "table", contents, + (GtkDestroyNotify) gtk_widget_unref); + gtk_box_pack_start (GTK_BOX (vbox1), contents, TRUE, TRUE, 0); - if (m_id == AP_DIALOG_ID_FIND) - gtk_widget_grab_default(findButton); - else - gtk_widget_grab_default(replaceButton); + // container for buttons - // Find entry should have focus, for immediate typing - gtk_widget_grab_focus(findEntry); - gtk_grab_add(topLevel); + hseparator1 = gtk_hseparator_new (); + gtk_widget_ref (hseparator1); + gtk_object_set_data_full (GTK_OBJECT (window1), "hseparator1", hseparator1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hseparator1); + gtk_box_pack_start (GTK_BOX (vbox1), hseparator1, TRUE, TRUE, 0); + + hbuttonbox1 = gtk_hbutton_box_new (); + gtk_widget_ref (hbuttonbox1); + gtk_object_set_data_full (GTK_OBJECT (window1), "hbuttonbox1", hbuttonbox1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (hbuttonbox1); + gtk_box_pack_start (GTK_BOX (vbox1), hbuttonbox1, TRUE, TRUE, 0); + + button4 = gtk_button_new_with_label ("<< Prev"); + gtk_widget_ref (button4); + gtk_object_set_data_full (GTK_OBJECT (window1), "button4", button4, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (button4); + gtk_container_add (GTK_CONTAINER (hbuttonbox1), button4); + gtk_signal_connect (GTK_OBJECT (button4), "clicked", + GTK_SIGNAL_FUNC (s_prevClicked), this); + GTK_WIDGET_SET_FLAGS (button4, GTK_CAN_DEFAULT); + + button5 = gtk_button_new_with_label ("Next >>"); + gtk_widget_ref (button5); + gtk_object_set_data_full (GTK_OBJECT (window1), "button5", button5, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (button5); + gtk_container_add (GTK_CONTAINER (hbuttonbox1), button5); + gtk_signal_connect (GTK_OBJECT (button5), "clicked", + GTK_SIGNAL_FUNC (s_nextClicked), this); + GTK_WIDGET_SET_FLAGS (button5, GTK_CAN_DEFAULT); + + goto_bt = gtk_button_new_with_label ("Go To"); + gtk_widget_ref (goto_bt); + gtk_object_set_data_full (GTK_OBJECT (window1), "goto_bt", goto_bt, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (goto_bt); + gtk_signal_connect_after(GTK_OBJECT(goto_bt), "clicked", + GTK_SIGNAL_FUNC(s_gotoClicked), this); + gtk_container_add (GTK_CONTAINER (hbuttonbox1), goto_bt); + GTK_WIDGET_SET_FLAGS (goto_bt, GTK_CAN_DEFAULT); + gtk_widget_set_sensitive (goto_bt, FALSE); + + close_bt = gtk_button_new_with_label ("Close"); + gtk_widget_ref (close_bt); + gtk_object_set_data_full (GTK_OBJECT (window1), "close_bt", close_bt, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (close_bt); + gtk_signal_connect_after(GTK_OBJECT(close_bt), "clicked", + GTK_SIGNAL_FUNC(s_closeClicked), NULL); + gtk_container_add (GTK_CONTAINER (hbuttonbox1), close_bt); + GTK_WIDGET_SET_FLAGS (close_bt, (GTK_CAN_DEFAULT | GTK_HAS_DEFAULT)); - gtk_widget_show(topLevel); + gtk_grab_add(window1); - // set up search data through base class - setView(static_cast (pFrame->getCurrentView()) ); - - // go - gtk_main(); + gtk_widget_show(window1); + return (window1); +} - // clean up - gtk_widget_destroy(topLevel); +GtkWidget *AP_UnixDialog_Goto::_constructWindowContents(void) +{ + GtkWidget *table; + GtkWidget *clist; + GtkWidget *scrolledwindow1; + GtkWidget *label; + GtkWidget *entry1; + GtkWidget *label2; + GtkWidget *label3; + + table = gtk_table_new (3, 3, FALSE); + gtk_widget_ref (table); + gtk_object_set_data_full (GTK_OBJECT (table), "table", table, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (table); + + scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL); + gtk_widget_ref (scrolledwindow1); + gtk_object_set_data_full (GTK_OBJECT (table), "scrolledwindow1", scrolledwindow1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (scrolledwindow1); + gtk_table_attach (GTK_TABLE (table), scrolledwindow1, 0, 1, 1, 2, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (GTK_FILL), 0, 0); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); + + clist = gtk_clist_new (1); + gtk_widget_ref (clist); + gtk_object_set_data_full (GTK_OBJECT (table), "clist", clist, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (clist); + gtk_container_add (GTK_CONTAINER (scrolledwindow1), clist); + gtk_clist_set_column_width (GTK_CLIST (clist), 0, 80); + gtk_clist_set_selection_mode (GTK_CLIST (clist), GTK_SELECTION_BROWSE); + gtk_signal_connect (GTK_OBJECT (clist), "select_row", + GTK_SIGNAL_FUNC (s_targetChanged), + this); + m_iRow = 0; + char **tmp = getJumpTargets (); + for (int i = 0; tmp[i] != NULL; i++) + gtk_clist_append(GTK_CLIST (clist), &tmp[i]); + + gtk_clist_column_titles_hide (GTK_CLIST (clist)); + + label = gtk_label_new ("Go To What:"); + gtk_widget_ref (label); + gtk_object_set_data_full (GTK_OBJECT (table), "label", label, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label); + gtk_table_attach (GTK_TABLE (table), label, 0, 1, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); + + entry1 = gtk_entry_new (); + gtk_widget_ref (entry1); + gtk_object_set_data_full (GTK_OBJECT (table), "entry1", entry1, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (entry1); + gtk_table_attach (GTK_TABLE (table), entry1, 1, 2, 1, 2, + (GtkAttachOptions) (GTK_EXPAND | GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_signal_connect (GTK_OBJECT (entry1), "changed", + GTK_SIGNAL_FUNC (s_dataChanged), NULL); + + label2 = gtk_label_new ("Number:"); + gtk_widget_ref (label2); + gtk_object_set_data_full (GTK_OBJECT (table), "label2", label2, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label2); + gtk_table_attach (GTK_TABLE (table), label2, 1, 2, 0, 1, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label2), 0, 0.5); + + label3 = gtk_label_new ("TODO: Write some help text..."); + gtk_widget_ref (label3); + gtk_object_set_data_full (GTK_OBJECT (table), "label3", label3, + (GtkDestroyNotify) gtk_widget_unref); + gtk_widget_show (label3); + gtk_table_attach (GTK_TABLE (table), label3, 1, 2, 2, 3, + (GtkAttachOptions) (GTK_FILL), + (GtkAttachOptions) (0), 0, 0); + gtk_misc_set_alignment (GTK_MISC (label3), 0, 0.5); + + return (table); +} +void AP_UnixDialog_Goto::_populateWindowData(void) +{ } + diff -u -r -x CVS abicommit/src/wp/ap/unix/ap_UnixDialog_Goto.h abigoto/src/wp/ap/unix/ap_UnixDialog_Goto.h --- abicommit/src/wp/ap/unix/ap_UnixDialog_Goto.h Sat May 1 03:46:00 1999 +++ abigoto/src/wp/ap/unix/ap_UnixDialog_Goto.h Thu Jun 1 00:44:54 2000 @@ -33,14 +33,23 @@ static XAP_Dialog * static_constructor(XAP_DialogFactory *, XAP_Dialog_Id id); - virtual void runModeless(XAP_Frame * pFrame); + virtual void runModal(XAP_Frame * pFrame); + void setSelectedRow(int row); + int getSelectedRow(void); // public so callbacks can access them - GtkWidget * targetList; - GtkWidget * targetEntry; +/* GtkWidget * targetList; */ +/* GtkWidget * targetEntry; */ + GtkWidget * m_wMainWindow; + int m_iRow; protected: - + GtkWidget * _constructWindow(void); + GtkWidget * _constructWindowContents(void); + void _populateWindowData(void); + static void s_targetChanged(GtkWidget *, gint, gint, + GdkEventButton *, AP_UnixDialog_Goto *); }; #endif /* AP_UNIXDIALOG_GOTO_H */ + diff -u -r -x CVS abicommit/src/wp/ap/xp/ap_Dialog_Goto.cpp abigoto/src/wp/ap/xp/ap_Dialog_Goto.cpp --- abicommit/src/wp/ap/xp/ap_Dialog_Goto.cpp Sat May 1 03:46:04 1999 +++ abigoto/src/wp/ap/xp/ap_Dialog_Goto.cpp Thu Jun 1 00:44:54 2000 @@ -32,56 +32,27 @@ #include "fl_DocLayout.h" #include "fv_View.h" +char * AP_Dialog_Goto::s_pJumpTargets[] = { + "Page", + "Line", + "Picture", + NULL +}; + AP_Dialog_Goto::AP_Dialog_Goto(XAP_DialogFactory * pDlgFactory, XAP_Dialog_Id id) - : XAP_Dialog_FramePersistent(pDlgFactory,id) + : XAP_Dialog_NonPersistent(pDlgFactory,id) { - persist_targetData = NULL; - persist_targetType = FV_JUMPTARGET_PAGE; - - m_pView = NULL; - - m_targetType = FV_JUMPTARGET_PAGE; - m_targetData = NULL; - - m_didSomething = UT_FALSE; - - // is this used? - m_answer = a_VOID; + m_pView = NULL; + m_answer = a_CLOSE; } AP_Dialog_Goto::~AP_Dialog_Goto(void) { - UT_ASSERT(!m_bInUse); - - FREEP(m_targetData); - - FREEP(persist_targetData); } -void AP_Dialog_Goto::useStart(void) +char ** AP_Dialog_Goto::getJumpTargets(void) { - UT_DEBUGMSG(("AP_Dialog_Goto::useStart(void) I've been called\n")); - - XAP_Dialog_FramePersistent::useStart(); - - // restore from persistent storage - if (persist_targetData) - UT_UCS_cloneString(&m_targetData, persist_targetData); -} - -void AP_Dialog_Goto::useEnd(void) -{ - - UT_DEBUGMSG(("AP_Dialog_Goto::useEnd(void) I've been called\n")); - XAP_Dialog_FramePersistent::useEnd(); - - // persistent dialogs don't destroy this data - if (m_didSomething) - { - FREEP(persist_targetData); - if (m_targetData) - UT_UCS_cloneString(&persist_targetData, m_targetData); - } + return (s_pJumpTargets); } AP_Dialog_Goto::tAnswer AP_Dialog_Goto::getAnswer(void) const @@ -91,69 +62,14 @@ } // --------------------------- Setup Functions ----------------------------- - -UT_Bool AP_Dialog_Goto::setView(AV_View * view) +UT_Bool AP_Dialog_Goto::setView(FV_View * view) { - // we can do a static cast from AV_View into FV_View, - // so we can get WP specific information from it. - // This could be bad once we introduce an - // outline view, etc. - UT_ASSERT(view); - - m_pView = static_cast(view); + m_pView = view; return UT_TRUE; } -AV_View * AP_Dialog_Goto::getView(void) const +FV_View * AP_Dialog_Goto::getView(void) const { return m_pView; -} - -UT_Bool AP_Dialog_Goto::setTargetType(FV_JumpTarget target) -{ - m_targetType = target; - return UT_TRUE; -} - -FV_JumpTarget AP_Dialog_Goto::getTargetType(void) -{ - return m_targetType; -} - -UT_Bool AP_Dialog_Goto::setTargetData(const UT_UCSChar * string) -{ - FREEP(m_targetData); - return UT_UCS_cloneString(&m_targetData, string); -} - -UT_UCSChar * AP_Dialog_Goto::getTargetData(void) -{ - UT_UCSChar * string = NULL; - if (m_targetData) - { - if (UT_UCS_cloneString(&string, m_targetData)) - return string; - } - else - { - if (UT_UCS_cloneString_char(&string, "")) - return string; - } - return NULL; -} - -// --------------------------- Action Functions ----------------------------- - -UT_Bool AP_Dialog_Goto::gotoTarget(void) -{ - UT_ASSERT(m_pView); - - UT_ASSERT(m_targetData); - - // so we save our attributes to persistent storage - m_didSomething = UT_TRUE; - - // call view to do the work - return m_pView->gotoTarget(m_targetType, m_targetData); } diff -u -r -x CVS abicommit/src/wp/ap/xp/ap_Dialog_Goto.h abigoto/src/wp/ap/xp/ap_Dialog_Goto.h --- abicommit/src/wp/ap/xp/ap_Dialog_Goto.h Sat May 1 03:46:04 1999 +++ abigoto/src/wp/ap/xp/ap_Dialog_Goto.h Thu Jun 1 00:44:54 2000 @@ -22,32 +22,32 @@ #include "xap_Frame.h" #include "xap_Dialog.h" -#include "fv_View.h" #include "xav_View.h" #include "fl_BlockLayout.h" #include "pt_Types.h" -class AP_Dialog_Goto : public XAP_Dialog_FramePersistent +class FV_View; + +typedef enum _AP_JumpTarget +{ + AP_JUMPTARGET_PAGE, // beginning of page + AP_JUMPTARGET_LINE, + AP_JUMPTARGET_PICTURE // TODO +} AP_JumpTarget; + +class AP_Dialog_Goto : public XAP_Dialog_NonPersistent { public: AP_Dialog_Goto(XAP_DialogFactory * pDlgFactory, XAP_Dialog_Id id); virtual ~AP_Dialog_Goto(void); - virtual void useStart(void); - virtual void runModeless(XAP_Frame * pFrame) = 0; - virtual void useEnd(void); + virtual void runModal(XAP_Frame * pFrame) = 0; // these are kinda screwy now, but we never return anything but on // "cancel" or "close" - typedef enum - { - a_VOID, - a_FIND_NEXT, - a_REPLACE, - a_REPLACE_ALL, - a_CANCEL - } - tAnswer; + typedef enum { + a_CLOSE + } tAnswer; AP_Dialog_Goto::tAnswer getAnswer(void) const; @@ -55,42 +55,18 @@ // to set or read the variables in the current // instance of the dialog. These do not read the persistent // values. - UT_Bool setView(AV_View * view); - AV_View * getView(void) const; + UT_Bool setView(FV_View * view); + FV_View * getView(void) const; - UT_Bool setTargetType(FV_JumpTarget target); - FV_JumpTarget getTargetType(void); - - UT_Bool setTargetData(const UT_UCSChar * string); - UT_UCSChar * getTargetData(void); + static char ** getJumpTargets(void); // TODO: Change to UT_UCSChar - // Action functions... set data using the accessors - // above and call one of these. - UT_Bool gotoTarget(void); - protected: - // These are the persistent dialog data items, - // which are carefully read and set by useStart() - // and useEnd(), and not by the accessors. - FV_JumpTarget persist_targetType; - UT_UCSChar * persist_targetData; - // These are the "current use" dialog data items, // which are liberally read and set by the - // accessor methods above. Note that the buffers - // these may point to are destroyed when useEnd() - // is done storing them away - FV_View * m_pView; - - FV_JumpTarget m_targetType; - UT_UCSChar * m_targetData; - - // These are also "current use" dialog data item, - // but they're not user-settable; they are set - // on conditions that action functions or other - // non-accessor methods are invoked. - UT_Bool m_didSomething; + // accessor methods above. + FV_View * m_pView; + static char * s_pJumpTargets[]; // is this used in a modeless dialog like this? tAnswer m_answer; diff -u -r -x CVS abicommit/src/wp/ap/xp/ap_EditMethods.cpp abigoto/src/wp/ap/xp/ap_EditMethods.cpp --- abicommit/src/wp/ap/xp/ap_EditMethods.cpp Thu Jun 1 02:06:57 2000 +++ abigoto/src/wp/ap/xp/ap_EditMethods.cpp Thu Jun 1 01:50:07 2000 @@ -67,7 +67,6 @@ #include "ie_impGraphic.h" #include "ie_exp.h" #include "ie_types.h" -#include "ap_EditMethods.h" /*****************************************************************/ /*****************************************************************/ @@ -2955,48 +2954,32 @@ /*****************************************************************/ -#if 0 static UT_Bool s_doGotoDlg(FV_View * pView, XAP_Dialog_Id id) { XAP_Frame * pFrame = (XAP_Frame *) pView->getParentData(); UT_ASSERT(pFrame); - + pFrame->raise(); - + XAP_DialogFactory * pDialogFactory = (XAP_DialogFactory *)(pFrame->getDialogFactory()); - + AP_Dialog_Goto * pDialog = (AP_Dialog_Goto *)(pDialogFactory->requestDialog(id)); UT_ASSERT(pDialog); - pDialog->runModeless(pFrame); - - UT_Bool bOK = UT_TRUE; - - // get result? + pDialog->setView(pView); + pDialog->runModal(pFrame); - pDialogFactory->releaseDialog(pDialog); - - return bOK; + return UT_TRUE; } -#endif Defun1(go) { -#if 0 - // TODO: this crashes on Win32. does it work already on Linux? ABIWORD_VIEW; XAP_Dialog_Id id = AP_DIALOG_ID_GOTO; - - return s_doGotoDlg(pView, id); -#else - XAP_Frame * pFrame = (XAP_Frame *) pAV_View->getParentData(); - UT_ASSERT(pFrame); - s_TellNotImplemented(pFrame, "Go To dialog", __LINE__); - return UT_TRUE; -#endif + return s_doGotoDlg(pView,id); } /*****************************************************************/