|
NCBI Home IEB Home C Toolkit docs C++ Toolkit source browser C Toolkit source browser (2) |
NCBI C Toolkit Cross ReferenceC/desktop/bspview.h |
source navigation diff markup identifier search freetext search file search |
1 /* seqview.h
2 * ===========================================================================
3 *
4 * PUBLIC DOMAIN NOTICE
5 * National Center for Biotechnology Information (NCBI)
6 *
7 * This software/database is a "United States Government Work" under the
8 * terms of the United States Copyright Act. It was written as part of
9 * the author's official duties as a United States Government employee and
10 * thus cannot be copyrighted. This software/database is freely available
11 * to the public for use. The National Library of Medicine and the U.S.
12 * Government do not place any restriction on its use or reproduction.
13 * We would, however, appreciate having the NCBI and the author cited in
14 * any work or product based on this material
15 *
16 * Although all reasonable efforts have been taken to ensure the accuracy
17 * and reliability of the software and data, the NLM and the U.S.
18 * Government do not and cannot warrant the performance or results that
19 * may be obtained by using this software or data. The NLM and the U.S.
20 * Government disclaim all warranties, express or implied, including
21 * warranties of performance, merchantability or fitness for any particular
22 * purpose.
23 *
24 * ===========================================================================
25 *
26 * File Name: seqview.h
27 *
28 * Author: Jonathan Kans
29 *
30 * Version Creation Date: 4/30/95
31 *
32 * $Revision: 6.64 $
33 *
34 * File Description:
35 *
36 * Modifications:
37 * --------------------------------------------------------------------------
38 * Date Name Description of modification
39 * ------- ---------- -----------------------------------------------------
40 *
41 *
42 * ==========================================================================
43 */
44
45 #ifndef _SEQVIEW_
46 #define _SEQVIEW_
47
48 #include <dlogutil.h>
49 #include <document.h>
50 #include <viewer.h>
51 #include <glbpic.h>
52
53
54 #undef NLM_EXTERN
55 #ifdef NLM_IMPORT
56 #define NLM_EXTERN NLM_IMPORT
57 #else
58 #define NLM_EXTERN extern
59 #endif
60
61 #ifdef __cplusplus
62 extern "C" {
63 #endif
64
65 typedef struct seqPanelLines {
66 Int4 bioSeqLine; /* this line refers to bioseq line */
67 Int2 lineType; /* what to draw on this line (see ELineType) */
68 Uint4 idx; /* feature index */
69 Int4 row; /* index in alignment */
70 Boolean protProduct; /* indicates whether product sequence should be drawn */
71 Boolean on_the_fly; /* indicates whether translation of feature location should be drawn */
72 } SeqPanLine, PNTR SeqPanLinePtr;
73
74
75 /* bioseqviewdata pointer is passed to callbacks to display views */
76
77 typedef struct bioseqviewdata {
78 BioseqPtr bsp;
79
80 VieweR vwr;
81 SegmenT pict;
82 DoC doc;
83 TexT text;
84 PaneL pnl;
85
86 PaneL udv;
87 PaneL ddv;
88
89 GrouP styleControlGrp;
90 GrouP scaleControlGrp;
91 GrouP findGeneGrp;
92 GrouP docTxtControlGrp;
93 GrouP baseCtgControlGrp;
94 GrouP modeControlGrp;
95 GrouP extraControlGrp;
96 GrouP newGphControlGrp;
97 GrouP pnlParentGrp;
98
99 PaneL seqView;
100 GrouP seqViewParentGrp;
101 PopuP newFeatControl;
102 PopuP newNumControl;
103 PopuP newGridControl;
104
105 /* for new sequence and alignment viewers */
106 Int4 LineHeight, LineSpace, CharHeight, CharWidth, BlocksAtLine, CharsAtLine, TotalLines, TargetRow;
107 Int2 SeqStartPosX; /* Draw Sequence from this x pos */
108 SeqAlignPtr salp;
109 Boolean DrawGrid, seqAlignMode;
110 SeqPanLinePtr PNTR SeqPanLines;
111 SelStructPtr sel_list;
112 ValNodePtr Selection;
113 Boolean frames[6]; /* indicates which frames should be displayed */
114 Boolean ShowComplement;
115 ValNodePtr chapter_list; /* list of chapters for SeqEd */
116 ValNodePtr PNTR feature_lists; /* storage for feature lists for SeqEd */
117 Int4 frame_for_codon_draw; /* This indicates which frame (1-6) to draw
118 * codons for. */
119 Boolean show_translation_errors; /* This indicates whether
120 * protein amino acids that
121 * do not match the sequence
122 * translation should be shown
123 * in red.
124 */
125 Boolean on_the_fly; /* This indicates whether an on-the-fly
126 * translation of coding regions should
127 * be shown.
128 */
129 Boolean showAlnSubstitutions; /* This indicates whether dots
130 * should be used to indicate
131 * matching characters.
132 */
133 Int4 last_aln_row_clicked; /* This indicates the last alignment
134 * row clicked by the user. If this
135 * value is 0, no row has been selected.
136 * This is used for drawing the alignment
137 * cursor and generating the position text.
138 */
139
140 GrouP udvParentGrp;
141 /*
142 GrouP ddvParentGrp;
143 */
144 PrompT clickMe;
145
146 Boolean useScrollText;
147 Boolean launchEditors;
148 Boolean launchSubviewers;
149 Boolean sendSelectMessages;
150 Boolean highlightSelections;
151 Boolean hasTargetControl;
152
153 Boolean viewWholeEntity;
154 Boolean scaleNotCalculated;
155 Boolean moveToOldPos;
156
157 PopuP style;
158 PopuP scale;
159 IteM legendItem;
160 Boolean legendOK;
161 Int4 maxScale;
162 Int4 minIndex;
163
164 PopuP seqControl;
165 PopuP featControl;
166 PopuP numControl;
167
168 PopuP ffModeCtrl;
169 PopuP ffStyleCtrl;
170 PopuP ffCustomBtn;
171 PopuP ffRifCtrl;
172
173 PopuP newGphStyle;
174 PopuP newGphFilter;
175 PopuP newGphScale;
176 PopuP newGphAlnScore;
177 PopuP newGphAlnCutoff;
178 ChoicE newGphLayout;
179
180 ValNodePtr slp_list;
181 ValNodePtr g_list;
182 ValNodePtr anp_node;
183 ValNodePtr ftype_list;
184 Uint2 seq_entityID;
185 GlobalDrawPtr gdraw_p;
186 Boolean isGenome;
187
188 Int2 expansion;
189
190 Int2 itemClicked;
191 Boolean wasDoubleClick;
192 Boolean wasShiftKey;
193 PoinT pnt_start;
194 PoinT pnt_stop;
195 Boolean old_rect_shown;
196
197 ValNodePtr bsplist;
198
199 FonT displayFont;
200 ValNodePtr sentinelList;
201 ValNodePtr entityList; /* for parts of genome record */
202 ValNodePtr tempResultList; /* to view results before attaching */
203 ForM form;
204 } BioseqViewData, PNTR BioseqViewPtr;
205
206 /* callback prototypes for implementing operations on a given page in a viewer */
207
208 typedef void (*BioseqViewProc) (BioseqViewPtr bvp);
209 typedef void (*BioseqShowHideProc) (BioseqViewPtr bvp, Boolean show);
210 typedef void (*BioseqExportProc) (BioseqViewPtr bvp, CharPtr filename, CharPtr dfault);
211 typedef void (*BioseqSelectProc) (BioseqViewPtr bvp, Uint2 entityID, Uint4 itemID, Uint2 itemtype, SeqLocPtr region, Boolean select, Boolean scrollto);
212
213 /* bioseqpagedata pointer array allows flexible control of pages in viewer */
214
215 typedef struct bioseqpagedata {
216 CharPtr label;
217 Boolean nucOK;
218 Boolean protOK;
219 Boolean genomeOK;
220 Boolean needAlignment;
221 Int4 maxLength;
222 BioseqViewProc populate;
223 BioseqShowHideProc show;
224 BioseqSelectProc highlight;
225 BioseqViewProc toClipboard;
226 BioseqViewProc print;
227 BioseqExportProc exprt;
228 BioseqExportProc togif;
229 BioseqViewProc resize;
230 struct bioseqpagedata PNTR next;
231 } BioseqPageData, PNTR BioseqPagePtr;
232
233 /* bioseqpagedata records are available for all pre-defined report types */
234
235 extern BioseqPageData mapPageData;
236 extern BioseqPageData sumPageData;
237 extern BioseqPageData gphPageData;
238 extern BioseqPageData alnPageData;
239 extern BioseqPageData seqPageData;
240 /*
241 extern BioseqPageData udvPageData;
242 extern BioseqPageData ddvPageData;
243 */
244
245 extern BioseqPageData gbgnPageData;
246 extern BioseqPageData gnbkPageData;
247 extern BioseqPageData emblPageData;
248 extern BioseqPageData ddbjPageData;
249 extern BioseqPageData gnptPageData;
250 extern BioseqPageData ftblPageData;
251
252 extern BioseqPageData fstaPageData;
253 extern BioseqPageData qualPageData;
254 extern BioseqPageData asnPageData;
255 extern BioseqPageData xmlPageData;
256 extern BioseqPageData gbseqPageData;
257 extern BioseqPageData dskPageData;
258
259 extern BioseqPageData asn2gphGphPageData;
260 extern BioseqPageData seqpnlPageData;
261 extern BioseqPageData seqAlnPnlPageData;
262
263 /*
264 * The SeqViewProcsPtr may be registered with a call to SetAppProperty
265 * e.g., SetAppProperty ("SeqDisplayForm", &viewprocs), where viewprocs
266 * is a persistent structure filled with callback function pointers
267 * specific for a given application.
268 */
269
270 /* seqviewprocs is registered to allow communication to library functions */
271
272 typedef GrouP (*SeqViewControlsProc) (GrouP prnt, BaseFormPtr bfp, Int2 doctype, Int4 uid);
273 typedef GrouP (*SeqViewFetchAlignsProc) (GrouP prnt, BaseFormPtr bfp);
274 typedef Boolean (*SeqViewUpdateFetchCounts) (GrouP g, SeqEntryPtr sep);
275
276 typedef struct seqviewprocs {
277 Boolean hasTargetControl;
278 Boolean hasDoneButton;
279 Boolean hasDuplicateButton;
280 Boolean allowScrollText;
281 Boolean startInScrollText;
282 Boolean launchEditors;
283 Boolean launchSubviewers;
284 Boolean sendSelectMessages;
285 Boolean highlightSelections;
286 Boolean forceSeparateViewer;
287 Boolean keepSmartViewerVisible;
288
289 Boolean cleanupObjectPtr;
290 WndActnProc activateForm;
291 WndActnProc closeForm;
292 WndActnProc createMenus;
293 GrpActnProc createToolBar;
294
295 FormMessageFunc handleMessages;
296
297 Int2 minPixelWidth;
298 Int2 minPixelHeight;
299 Int2 initNucPage;
300 Int2 initProtPage;
301 CharPtr initNucLabel;
302 CharPtr initProtLabel;
303 CharPtr initGenomeLabel;
304 Int2 useFolderTabs;
305
306 FonT displayFont;
307 CharPtr filepath;
308
309 Char screenMode;
310
311 BioseqPagePtr pageSpecs;
312
313 SeqViewControlsProc makeControls;
314 GrpActnProc updateControls;
315 SeqViewFetchAlignsProc makeAlignBtn;
316 SeqViewUpdateFetchCounts updateCounts;
317
318 IteM alignWithChecked; /* application sets to EntrezGlobalsPtr->alignWithChecked */
319 Boolean alignDefault; /* application sets to EntrezGlobalsPtr->alignDefault */
320
321 Boolean lockFarComponents;
322 } SeqViewProcs, PNTR SeqViewProcsPtr;
323
324 typedef struct bioseqviewform {
325 FORM_MESSAGE_BLOCK
326
327 BioseqPagePtr bioseqNucPageList;
328 BioseqPagePtr bioseqProtPageList;
329 BioseqPagePtr currentBioseqPage;
330 ButtoN pubseq;
331
332 Int2 currentNucPage;
333 Int2 currentProtPage;
334
335 Handle nucViewControl;
336 Handle protViewControl;
337 Handle targetControl;
338 EnumFieldAssoc PNTR targetAlist;
339 Boolean usePopupForTarget;
340 Int4 numTargets;
341 Int4 targetScratchSpace;
342 GrouP controls;
343 GrpActnProc updateControls;
344 GrouP retrieveAlignments;
345 SeqViewUpdateFetchCounts updateCounts;
346 Boolean hasaligns;
347
348 EnumFieldAssoc PNTR workingAlist;
349 Int4 workingCount;
350 Int4 workingTargets;
351
352 BioseqViewData bvd;
353
354 Boolean cleanupObjectPtr;
355 WndActnProc activateForm;
356
357 ForM toolForm;
358 } BioseqViewForm, PNTR BioseqViewFormPtr;
359
360 #define REGISTER_NEW_SEQENTRY_VIEW ObjMgrProcLoad(OMPROC_VIEW,"View Bioseq Report","Bioseq Report",OBJ_BIOSEQ,0,OBJ_BIOSEQ,0,NULL,NewSeqEntryViewGenFunc,PROC_PRIORITY_DEFAULT)
361 #define REGISTER_SMART_SEQENTRY_VIEW ObjMgrProcLoad(OMPROC_VIEW,"View Smart Bioseq Report","Bioseq Report",OBJ_BIOSEQ,0,OBJ_BIOSEQ,0,NULL,SmartSeqEntryViewGenFunc,PROC_PRIORITY_DEFAULT)
362
363 extern ForM LIBCALL CreateNewSeqEntryViewForm (Int2 left, Int2 top, CharPtr title,
364 BioseqPtr bsp, SeqViewProcsPtr svpp);
365
366 /* RemoveSeqEntryViewer will hide and reuse the last window in Smart mode */
367 extern ForM RemoveSeqEntryViewer (ForM f);
368
369 extern Int2 LIBCALLBACK NewSeqEntryViewGenFunc (Pointer data);
370 extern Int2 LIBCALLBACK SmartSeqEntryViewGenFunc (Pointer data);
371
372 extern void LIBCALL NewSaveBioseqViewFormGifItemTable (Pointer formDataPtr, CharPtr filename);
373
374 extern void LIBCALL AddBioseqPageToList (BioseqPagePtr PNTR head, BioseqPagePtr bpp);
375 extern BioseqPagePtr LIBCALL BioseqPageListFree (BioseqPagePtr bpp);
376
377 extern IteM CreateLegendItem (MenU m, BaseFormPtr bfp);
378
379 extern ForM MakeToolFormForBioseqView (BaseFormPtr bfp, GrpActnProc createToolBar);
380 extern ForM ReplaceToolFormForBioseqView (BaseFormPtr bafp, GrpActnProc createToolBar);
381 extern void SetBioseqViewTarget (BaseFormPtr fp, CharPtr seqId);
382 extern BioseqPtr GetBioseqViewTarget (BaseFormPtr fp);
383
384 extern BioseqViewPtr GetBioseqViewPtrFromBaseFormPtr (BaseFormPtr fp);
385 NLM_EXTERN void Nlm_LaunchWebPage (Char *url);
386
387 extern Boolean BioseqViewCanSaveFasta (ForM f, Boolean nucs, Boolean prots, Boolean onlyTarget);
388 extern Boolean ExportBioseqViewFasta (ForM f, CharPtr filename, Boolean nucs, Boolean prots, Boolean onlyTarget);
389
390 extern Boolean SeqnSeqEntrysToFasta (SeqEntryPtr sep, FILE *fp, Boolean is_na, Uint1 group_segs);
391
392 /* The following functions are normally for internal use */
393
394 extern Int2 LIBCALLBACK BioseqViewMsgFunc (OMMsgStructPtr ommsp);
395
396 extern Boolean InBioseqViewEntityList (Uint2 entityID, BioseqViewPtr bvp);
397 extern void LIBCALL LaunchNewBioseqViewer (BioseqPtr bsp, Uint2 entityID, Uint4 itemID, Uint2 itemtype);
398 extern Boolean LIBCALL IsAGenomeRecord (SeqEntryPtr sep);
399 extern Boolean LIBCALL IsANamedAlignment (Uint2 entityID, Uint4 itemID, Uint2 itemtype);
400 extern Boolean IsSegmentedBioseqWithoutParts (SeqEntryPtr sep);
401 extern Boolean IsADeltaBioseq (SeqEntryPtr sep);
402 extern Boolean LIBCALL LaunchViewerNotEditor (BioseqViewPtr bvp, SeqEntryPtr sep,
403 Uint2 entityID, Uint4 itemID, Uint2 itemtype);
404
405 extern ValNodePtr LIBCALL GetUidsForSeqEntryAligns (SeqEntryPtr sep);
406 extern ValNodePtr LIBCALL GetIdStringsForSeqEntryAligns (SeqEntryPtr sep);
407 extern void LIBCALL GetUidsForOneSeqAnnot (SeqAnnotPtr sap, ValNodePtr PNTR vnpp, Uint1 align_type);
408 extern int LIBCALLBACK SortByVnpDataIntvalue (VoidPtr ptr1, VoidPtr ptr2);
409
410 extern void ShowGeneList (ButtoN b);
411 extern void EnableDisableLegendItem (BioseqViewPtr bvp, Boolean enable);
412
413 #ifdef __cplusplus
414 }
415 #endif
416
417 #undef NLM_EXTERN
418 #ifdef NLM_EXPORT
419 #define NLM_EXTERN NLM_EXPORT
420 #else
421 #define NLM_EXTERN
422 #endif
423
424 #endif /* ndef _SEQVIEW_ */
425
426 |
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more information. |