[med-svn] r245 - in trunk/packages/seaview/trunk: . debian

Charles Plessy charles-guest at alioth.debian.org
Thu Apr 5 00:40:25 UTC 2007


Author: charles-guest
Date: 2007-04-05 00:40:24 +0000 (Thu, 05 Apr 2007)
New Revision: 245

Modified:
   trunk/packages/seaview/trunk/align.cxx
   trunk/packages/seaview/trunk/debian/changelog
   trunk/packages/seaview/trunk/debian/rules
   trunk/packages/seaview/trunk/debian/seaview.1.xml
   trunk/packages/seaview/trunk/load_seq.cxx
   trunk/packages/seaview/trunk/resource.cxx
   trunk/packages/seaview/trunk/seaview.cxx
   trunk/packages/seaview/trunk/seaview.h
   trunk/packages/seaview/trunk/seaview.help
Log:
New upstream release. Took the opportunity to improve manpage

Modified: trunk/packages/seaview/trunk/align.cxx
===================================================================
--- trunk/packages/seaview/trunk/align.cxx	2007-04-04 01:15:50 UTC (rev 244)
+++ trunk/packages/seaview/trunk/align.cxx	2007-04-05 00:40:24 UTC (rev 245)
@@ -85,7 +85,7 @@
 			l_line = 0;
 			}
 		line[l_line++] = sequence[num][pos];
-		if(protein && sequence[num][pos] == '*') line[l_line - 1] = 'X';
+		if(sequence[num][pos] == '*') line[l_line - 1] = 'X';
 		*empty_seq = FALSE;
 		}
 	line[l_line] = 0;
@@ -398,9 +398,7 @@
 	}	
 lfrag = strlen(seq[0]); /* long alignement de clustalw */
 lpart = fin - debut + 1; /*long region traitee de l'ancien alignement multiple*/
-if(view->protein) {
-	if( reset_stars(view, debut, lpart, seq, lfrag) ) return TRUE;
-	}
+if( reset_stars(view, debut, lpart, seq, lfrag) ) return TRUE;
 /* num1 = rang dans align clustalw de num_longest dans align multiple */
 num1 = -1;
 for(i = 0; i < view->tot_seqs; i++) {
@@ -634,7 +632,7 @@
 	fl_cursor(FL_CURSOR_DEFAULT, FL_BLACK, FL_BLACK);
 	status = ask_with_custom_yesno(
 		"Wait for alignment completion in Terminal window.",
-		"Alignment completed","Ignore of interrupt alignment") ? 0 : 1 ; 
+		"Alignment completed","Ignore or interrupt alignment") ? 0 : 1 ; 
 	// try to kill only a newly started Terminal and not something else
 	if( FSCompareFSRefs(&frontproc, &myterm) == noErr) KillProcess(&newpsn);
 	}

Modified: trunk/packages/seaview/trunk/debian/changelog
===================================================================
--- trunk/packages/seaview/trunk/debian/changelog	2007-04-04 01:15:50 UTC (rev 244)
+++ trunk/packages/seaview/trunk/debian/changelog	2007-04-05 00:40:24 UTC (rev 245)
@@ -1,9 +1,11 @@
-seaview (20061005-2) unstable; urgency=low
+seaview (20070215-1) unstable; urgency=low
 
+  * New upstream release, adding a new "Edit sequence" option in the Edit menu.
+  * Updated manpage and converted it to Unicode.
   * Add Subversion repository URL to debian/control.
   * Including /usr/share/dpatch/dpatch.make in debian/rules.
 
- -- Charles Plessy <charles-debian-nospam at plessy.org>  Sat, 10 Mar 2007 14:31:29 +0900
+ -- Charles Plessy <charles-debian-nospam at plessy.org>  Thu,  5 Apr 2007 09:38:08 +0900
 
 seaview (20061005-1) unstable; urgency=low
 
@@ -12,9 +14,8 @@
   * Removing options passed to x-terminal-emulator if they are not a MUST in
     the policy chapter 11.8.3.
   * Improved manpage.
-  * i-
 
- -- Charles Plessy <charles-debian-nospam at plessy.org>  Sun,  4 Mar 2007 22:54:12 +0900
+ -- Charles Plessy <charles-debian-nospam at plessy.org>  Sat, 28 Oct 2006 17:27:02 +0900
 
 seaview (20060918-1) unstable; urgency=low
 

Modified: trunk/packages/seaview/trunk/debian/rules
===================================================================
--- trunk/packages/seaview/trunk/debian/rules	2007-04-04 01:15:50 UTC (rev 244)
+++ trunk/packages/seaview/trunk/debian/rules	2007-04-05 00:40:24 UTC (rev 245)
@@ -30,9 +30,13 @@
 	touch build-stamp
 	
 debian/$(PROGRAM_NAME).1: debian/$(PROGRAM_NAME).1.xml
-	xsltproc -o debian/ -''-nonet /usr/share/xml/docbook/stylesheet/nwalsh/manpages/docbook.xsl debian/$(PROGRAM_NAME).1.xml
+	xsltproc -o debian/ \
+	         -''-nonet \
+	         -''-param man.charmap.use.subset "0" \
+		 -''-param make.year.ranges "1" \
+		 -''-param make.single.year.ranges "1" \
+		 debian/$(PROGRAM_NAME).1.xml
 
-
 clean: clean-patched unpatch
 
 clean-patched:

Modified: trunk/packages/seaview/trunk/debian/seaview.1.xml
===================================================================
--- trunk/packages/seaview/trunk/debian/seaview.1.xml	2007-04-04 01:15:50 UTC (rev 244)
+++ trunk/packages/seaview/trunk/debian/seaview.1.xml	2007-04-05 00:40:24 UTC (rev 245)
@@ -1,15 +1,19 @@
-<?xml version="1.0" encoding="iso-8859-1"?>
+<?xml version="1.0" encoding="UTF-8"?>
+<?xml-stylesheet type="text/xsl"
+        href="http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl"?>
 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
 "/usr/share/xml/docbook/schema/dtd/4.4/docbookx.dtd" [
 
-  <!ENTITY dhfirstname "<firstname>Charles</firstname>">
-  <!ENTITY dhsurname   "<surname>Plessy</surname>">
-  <!ENTITY dhdate      "<date>2006-10-28</date>">
-  <!ENTITY dhsection   "<manvolnum>1</manvolnum>">
-  <!ENTITY dhemail     "<email>charles-debian-nospam at plessy.org</email>">
-  <!ENTITY dhusername  "Charles Plessy">
-  <!ENTITY dhucpackage "<refentrytitle>SEAVIEW</refentrytitle>">
+  <!ENTITY dhfirstname "Charles">
+  <!ENTITY dhsurname   "Plessy">
+  <!ENTITY dhdate      "2007-03-31">
+  <!ENTITY dhsection   "1">
+  <!ENTITY dhemail     "charles-debian-nospam at plessy.org">
+  <!ENTITY dhusername  "&dhfirstname; &dhsurname;">
+  <!ENTITY dhucpackage "SEAVIEW">
   <!ENTITY dhpackage   "seaview">
+  <!ENTITY dhrelease   "20070215">
+  <!ENTITY dhtitle     "Seaview Manual">
   <!ENTITY debian      "<productname>Debian</productname>">
   <!ENTITY gnu         "<acronym>GNU</acronym>">
   <!ENTITY gpl         "&gnu; <acronym>GPL</acronym>">
@@ -17,34 +21,85 @@
 
 <refentry>
   <refentryinfo>
-    <address>
-      &dhemail;
-    </address>
-<!--    <author>
-      &dhfirstname;
-      &dhsurname; 
-    </author>  -->
-    <copyright>
-      <year>2006</year>
-      <holder>&dhusername;</holder>
-    </copyright>
-    &dhdate;
+     <title>&dhtitle;</title>
+        <productname>&dhpackage;</productname>
+        <releaseinfo role="version">&dhrelease;</releaseinfo>
+        <date>&dhdate;</date>
+        <authorgroup>
+           <author>
+              <firstname>Manolo</firstname>
+              <surname>Gouy</surname>
+              <contrib>Upstream author of SeaView.</contrib>
+              <address>
+                <email>mgouy at biomserv.univ-lyon1.fr</email>
+              </address>
+            </author>
+            <author>
+              <firstname>Stéphane</firstname>
+              <surname>Bortzmeyer</surname>
+              <contrib>Wrote this manpage in DocBook XML for the Debian distribution.</contrib>
+            <address>
+              <email>bortzmeyer at debian.org</email>
+            </address>
+          </author>
+            <author>
+              <firstname>&dhfirstname;</firstname>
+              <surname>&dhsurname;</surname>
+              <contrib>Updated this manpage in DocBook XML for the Debian distribution.</contrib>
+            <address>
+              <email>&dhemail;</email>
+            </address>
+          </author>
+       </authorgroup>
+     <copyright>
+       <year>1996</year>
+       <year>1997</year>
+       <year>1998</year>
+       <year>1999</year>
+       <year>2000</year>
+       <year>2001</year>
+       <year>2002</year>
+       <year>2003</year>
+       <year>2004</year>
+       <year>2005</year>
+       <year>2006</year>
+       <year>2007</year>
+       <holder>Manolo Gouy</holder>
+     </copyright>
+     <copyright>
+       <year>1999</year>
+       <holder>Stéphane Bortzmeyer</holder>
+     </copyright>
+     <copyright>
+       <year>2006</year>
+       <year>2007</year>
+       <holder>Charles Plessy</holder>
+     </copyright>
+     <legalnotice>
+       <para><application>SeaView</application> is released under the GNU General Public Licence</para>
+       
+       <para>You can redistribute and/or modify this manpage under same terms as SeaView itself.<!-- This also applies to this xml document. --></para>
+       
+       <para> On Debian systems, the complete text of the GNU General Public License can be found in <filename>/usr/share/common-licenses/GPL</filename>.</para>
+     </legalnotice>
   </refentryinfo>
+  
   <refmeta>
-    &dhucpackage;
-
-    &dhsection;
+    <refentrytitle>&dhucpackage;</refentrytitle>
+    <manvolnum>&dhsection;</manvolnum>
   </refmeta>
+  
   <refnamediv>
     <refname>&dhpackage;</refname>
-
     <refpurpose>a multiple sequence alignment editor</refpurpose>
   </refnamediv>
+  
   <refsynopsisdiv>
     <cmdsynopsis>
       <command>&dhpackage;</command> <arg choice="opt"><replaceable>filename</replaceable></arg>
     </cmdsynopsis>
   </refsynopsisdiv>
+  
   <refsect1>
     <title>DESCRIPTION</title>
 
@@ -90,25 +145,15 @@
     <title>SEE ALSO</title>
     <para> The program is fully documented online. Press the "help" button in the main window. On Debian systems, the text template for SeaView's help can be found in <filename>/usr/share/seaview/seaview.help</filename> (It is human readable).</para>
     
-    <para>The home page of SeaView is pbil.univ-lyon1.fr/software/seaview.html.</para>
+    <para>
+      Two multiple alignment programs can be called from whithin SeaView: <citerefentry><refentrytitle>muscle</refentrytitle><manvolnum>1</manvolnum></citerefentry> and <citerefentry><refentrytitle>clustalw</refentrytitle><manvolnum>1</manvolnum></citerefentry>.
+    </para>
+    
+    <para>The home page of SeaView is http://pbil.univ-lyon1.fr/software/seaview.html.</para>
   </refsect1>
 
   <refsect1>
     <title>REFERENCE</title>
     <para>If you use SeaView in a published work, please cite the following reference: Galtier, N., Gouy, M. and Gautier, C. (1996) SeaView and Phylo_win, two graphic tools for sequence alignment and molecular phylogeny. Comput. Applic. Biosci., 12, 543-548. </para>
   </refsect1>
-      
-  <refsect1>
-    <title>AUTHORS</title>
-
-    <para><application>SeaView</application> is Copyright (C) 1996-2005 Manolo Gouy <email>mgouy at biomserv.univ-lyon1.fr</email>. It is released under the GNU General Public Licence</para>
-
-    <para>This manual page was written by  Stephane Bortzmeyer <email>bortzmeyer at debian.org</email> and updated by &dhusername; (&dhemail;) for the &debian; system (but may be used by others). You can redistribute it and/or modify it under same terms as SeaView itself.<!-- This also applies to this xml document. --></para>
-	
-    <para>
-      On Debian systems, the complete text of the GNU General Public
-      License can be found in /usr/share/common-licenses/GPL.
-    </para>
-
-  </refsect1>
 </refentry>

Modified: trunk/packages/seaview/trunk/load_seq.cxx
===================================================================
--- trunk/packages/seaview/trunk/load_seq.cxx	2007-04-04 01:15:50 UTC (rev 244)
+++ trunk/packages/seaview/trunk/load_seq.cxx	2007-04-05 00:40:24 UTC (rev 245)
@@ -1,6 +1,8 @@
 #include "seaview.h"
 #include <ctype.h>
+#include <FL/Fl_Multiline_Input.H>
 
+#define ISSEQCHAR(c) (isalpha(c) || c=='-' || c=='*' )
 
 typedef struct {
 	SEA_VIEW *view;
@@ -21,6 +23,12 @@
 	int lenseq);
 char complement_base(char old);
 void edit_comments_dialog(SEA_VIEW *view);
+void edit_sequence_dialog(SEA_VIEW *view);
+void close_editseqwin_callback(Fl_Widget *ob, void *data);
+int load_sequence_for_edit(struct editseq *editdata);
+char *renumber_seq(char *seq);
+void renumber_callback(Fl_Widget *ob, void *data);
+void edit_sequence_callback(Fl_Widget *ob, void *data);
 void update_comments_callback(Fl_Widget *ob, void *data);
 int load_comments(SEA_VIEW *view, Fl_Input *input, Fl_Widget *name);
 char *cre_consensus(SEA_VIEW *view, char *newname);
@@ -28,6 +36,11 @@
 	char *label);
 
 
+/* external prototypes */
+extern void allonge_seqs(char **seq, int totseqs, int maxlen, int *eachlength,
+	int tot_comment_lines, char **comment_line);
+	
+	
 void clear_callback(Fl_Widget *ob, void *data)
 {
 Fl_Input *seq_input, *seq_name_input;
@@ -264,7 +277,7 @@
 seq_name_input->value("");
 seq_input->value("");
 #if defined(__APPLE__)
-	seq_input->value("\n\n\n\n\n\nType sequence or paste it with CRTL-V\n\n\n");
+	seq_input->value("\n\n\n\n\n\nType sequence or paste it with cmd-V\n\n\n");
 	seq_input->position(seq_input->size(), 0);
 #endif	
 seq_input->take_focus();
@@ -276,7 +289,7 @@
 	int lenseq)
 {
 int num, *newsel, numset;
-void *newcol;
+char ***newcol;
 static char defname[]="newfile";
 char **new_s, **new_n, **new_c;
 
@@ -334,16 +347,17 @@
 	((Fl_Slider*)view->horsli)->bounds(1,l);
 	}
 if(view->numb_dnacolors > 1) {
-	if( (newcol = (void *)malloc(num*sizeof(void *))) == NULL) 
+	if( (newcol = (char ***)malloc(num*sizeof(char **))) == NULL) 
 		goto nomem;
-	memcpy(newcol, view->col_seq, (num-1)*sizeof(void *) );
-	free(view->col_seq);
-	view->col_seq = (char ***)newcol;
-	view->col_seq[num-1] = * prepcolseqs(view->sequence+num-1, 1, 
+	memcpy(newcol, view->col_seq, (num-1)*sizeof(char **) );
+	newcol[num-1] = * prepcolseqs(view->sequence+num-1, 1, 
 		view->max_seq_length,
 		view->each_length+num-1, 
 		( view->protein ? get_color_for_aa : get_color_for_base ), 
 		view->numb_gc, view->allow_lower);
+	if(newcol[num - 1] == NULL) out_of_memory();
+	free(view->col_seq);
+	view->col_seq = newcol;
 	}
 if( (newsel = (int *)malloc(num*sizeof(int))) == NULL) goto nomem;
 memcpy(newsel, view->sel_seqs, (num-1)*sizeof(int) );
@@ -447,7 +461,195 @@
 comments_form->show();
 }
 
+struct editseq {
+	Fl_Window *form;
+	Fl_Multiline_Input *input;
+	Fl_Widget *name;
+	Fl_Widget *apply;
+	Fl_Widget *renumber;
+	SEA_VIEW *view;
+	int seqnum;
+	};
 
+
+void edit_sequence_dialog(SEA_VIEW *view)
+{
+struct editseq *editdata;
+int fin, width, num;
+
+for(num = 0; num <view->tot_seqs; num++) { if(view->sel_seqs[num]) break; }
+if(num >= view->tot_seqs) return;
+editdata = (struct editseq *)malloc(sizeof(struct editseq));
+if(editdata == NULL) return;
+editdata->seqnum = num;
+editdata->view = view;
+editdata->form = new Fl_Window(770,530);
+editdata->form->label("Sequence Editing");
+editdata->form->box(FL_FLAT_BOX);
+editdata->form->callback(close_editseqwin_callback, editdata);
+
+Fl_Group *top_group = new Fl_Group(5,5,editdata->form->w() - 10, 25);
+fin = 5;
+editdata->apply = cre_adjusted_button(fin,5,&width,25, "Apply");
+editdata->apply->callback(edit_sequence_callback, 0);
+fin += width + 5;
+
+editdata->renumber = cre_adjusted_button(fin,5,&width,25,"Renumber");
+editdata->renumber->callback(renumber_callback, 0);
+fin += width + 5;
+
+Fl_Widget *obj = cre_adjusted_button(fin,5,&width,25,"Cancel");
+obj->callback(close_editseqwin_callback, editdata);
+fin += width + 5;
+
+editdata->name = new Fl_Box(FL_DOWN_BOX, fin, 5, 
+	top_group->x() +top_group->w() - fin, 25, "");
+editdata->name->align(FL_ALIGN_CENTER);
+editdata->name->labelfont(FL_COURIER);
+editdata->name->labelsize(FL_NORMAL_SIZE);
+
+top_group->resizable(editdata->name);
+top_group->end();
+
+editdata->input = new Fl_Multiline_Input(5,35,top_group->w(),
+		editdata->form->h() - 5 - 35, "");
+editdata->input->type(FL_MULTILINE_INPUT);
+editdata->input->textfont(FL_COURIER);
+editdata->input->textsize(12);
+editdata->form->resizable(editdata->input);
+editdata->form->end();
+editdata->form->position( (Fl::w() - editdata->form->w())/2, 
+		(Fl::h() - editdata->form->h())/2 );
+	
+if(load_sequence_for_edit(editdata)) {
+	fl_alert("Not enough memory");
+	return;
+	}
+editdata->form->show();
+editdata->input->take_focus();
+}
+
+
+void close_editseqwin_callback(Fl_Widget *ob, void *data)
+{
+free(data);
+Fl_Window *w = ob->window();
+delete (w == NULL ? ob : w);
+}
+
+
+int load_sequence_for_edit(struct editseq *editdata)
+{
+char *temp;
+
+editdata->name->label(editdata->view->seqname[editdata->seqnum]);
+editdata->name->redraw();
+
+temp = renumber_seq(editdata->view->sequence[editdata->seqnum]);
+if(temp == NULL) return TRUE;
+editdata->input->value(temp);
+free(temp);
+editdata->input->position(0);
+return FALSE;
+}
+
+
+char *renumber_seq(char *seq)
+{
+int l, nl, pos;
+char *p, *q, *temp;
+const int w = 100;
+
+p = seq - 1;
+l = 0;
+while(*(++p) != 0) {
+	if(ISSEQCHAR(*p)) l++;
+	}
+nl = l / w + 2;
+temp = (char *)malloc(l + 7 * nl + 100);
+if(temp == NULL) return NULL;
+p = seq - 1;
+q = temp;
+pos = 0;
+while(*(++p) != 0) {
+	if( ! ISSEQCHAR(*p)) continue;
+	*q++ = *p; pos++;
+	if(pos % w == 0) {
+		sprintf(q, "%6d\n", pos);
+		q += strlen(q);
+		}
+	}
+strcpy(q, "\n");
+return temp;
+}
+
+
+void renumber_callback(Fl_Widget *ob, void *data)
+{
+char *temp;
+struct editseq *editdata = (struct editseq *)ob->window()->user_data();
+
+temp = renumber_seq((char *)editdata->input->value());
+if(temp == NULL) return;
+editdata->input->value(temp);
+free(temp);
+}
+
+
+void edit_sequence_callback(Fl_Widget *ob, void *data)
+{
+struct editseq *editdata = (struct editseq *)ob->window()->user_data();
+char *p, *newseq, *q, *r, **newcolseq;
+SEA_VIEW *view;
+int num, l, col;
+
+view = editdata->view;
+num = editdata->seqnum;
+
+newseq = (char *)malloc(view->max_seq_length + 1);
+if(newseq == NULL) return;
+q = newseq;
+p = (char *)editdata->input->value() - 1;
+while(*(++p) !=  0) {
+	if( ! ISSEQCHAR(*p) ) continue;
+	if(q - newseq >= view->max_seq_length) {
+		fl_alert("Warning: sequence was truncated to current max sequence length %d", view->max_seq_length);
+		break;
+		}
+	*(q++) = *p;
+	}
+*q = 0;
+l = strlen(newseq);
+if(view->numb_gc > 1) {
+	newcolseq = * prepcolseqs(&newseq, 1, 
+		view->max_seq_length, &l, 
+		( view->protein ? get_color_for_aa : get_color_for_base ), 
+		view->numb_gc, view->allow_lower);
+	if(newcolseq == NULL) return;
+	for(col = 0; col < view->numb_gc; col++) free(view->col_seq[num][col]);
+	free(view->col_seq[num]);
+	view->col_seq[num] = newcolseq;
+	}
+free(view->sequence[num]);
+view->sequence[num] = newseq;
+view->each_length[num] = l;
+view->modif_but_not_saved = TRUE;
+if(l > view->seq_length) {
+	double x;
+	view->seq_length = l;
+	x = ( (double) view->tot_sites ) / ( view->seq_length + 3 ); 
+	if(x>1) x=1;
+	((Fl_Slider*)view->horsli)->slider_size(x);
+	l = view->seq_length - view->tot_sites+3;
+	if(l<1) l=1;
+	((Fl_Slider*)view->horsli)->bounds(1,l);
+	}
+else view->mod_seq = num;
+view->DNA_obj->redraw();
+ob->window()->do_callback();
+}
+
+
 void update_comments_callback(Fl_Widget *ob, void *data)
 {
 Fl_Input *comments_input;

Modified: trunk/packages/seaview/trunk/resource.cxx
===================================================================
--- trunk/packages/seaview/trunk/resource.cxx	2007-04-04 01:15:50 UTC (rev 244)
+++ trunk/packages/seaview/trunk/resource.cxx	2007-04-05 00:40:24 UTC (rev 245)
@@ -12,14 +12,47 @@
 int save_resources(void);
 
 
-#if defined(__APPLE__) && ! TARGET_RT_MAC_MACHO
+#if defined(__APPLE__)
 
+#if TARGET_RT_MAC_MACHO
+/* for Mac OS X */
+char *get_res_value(char *name, char *def_value, void *unused)
+{
+OSStatus err;
+CFStringRef cfname;
+CFPropertyListRef cfvalue;
+static char value[100];
+
+cfname = CFStringCreateWithCString(kCFAllocatorDefault, name, kCFStringEncodingASCII);
+cfvalue = CFPreferencesCopyAppValue(cfname, kCFPreferencesCurrentApplication);
+if(cfvalue == NULL) return def_value;
+CFStringGetCString( (CFStringRef)cfvalue, value, sizeof(value), kCFStringEncodingASCII);
+CFRelease(cfname); CFRelease(cfvalue);
+return value;
+}
+
+
+int set_res_value(const char *name, const char *value)
+{
+char *p;
+CFStringRef cfname, cfvalue;
+
+cfname = CFStringCreateWithCString(kCFAllocatorDefault, name, kCFStringEncodingASCII);
+cfvalue = CFStringCreateWithCString(kCFAllocatorDefault, value, kCFStringEncodingASCII);
+CFPreferencesSetAppValue(cfname, cfvalue, kCFPreferencesCurrentApplication);
+CFPreferencesAppSynchronize(kCFPreferencesCurrentApplication);
+CFRelease(cfname); CFRelease(cfvalue);
+return 0;
+}
+
+#else
+/* for Classic MaCOS */
 extern "C" {
 extern void PtoC(const void *in, void *out);
 extern void CtoP(const void *in, void *out);
 }
 
-char *load1res(char *resname)
+static char *load1res(char *resname)
 {
 	char **h, *p, pname[256]; 
 	int l;
@@ -42,12 +75,6 @@
 	return p;
 }
 	
-void *load_resources(char *progname)
-{
-return NULL;	
-}
-
-
 char *get_res_value(char *name, char *def_value, void *v_db)
 {
 char *p;
@@ -101,14 +128,20 @@
 return err != noErr ;
 }
 
+#endif
 
 int save_resources(void)
 { // nothing to do, taken care of by the system
 }
 
+void *load_resources(char *progname)
+{ // nothing to do, taken care of by the system
+return NULL;	
+}
 
-#else /* for X11 and win32 and MacOS-machO */
 
+#else /* for X11 and win32 */
+
 typedef struct _item {
 	struct _item *before;
 	char *name;
@@ -120,9 +153,6 @@
 
 extern "C" { 
 	char *get_prog_dir(void); 
-#if defined(__APPLE__) && TARGET_RT_MAC_MACHO
-	char *MG_GetBundleResourcesDir(void);
-#endif
 	}
 
 char *res_filename(void)
@@ -135,10 +165,6 @@
 if(p == NULL) return NULL;
 strcpy(fname, p);
 strcat(fname, "\\seaview.ini");
-#elif defined(__APPLE__) && TARGET_RT_MAC_MACHO
-p = MG_GetBundleResourcesDir();
-strcpy(fname, p);
-strcat(fname, "/seaview.ini");
 #else
 p = getenv("HOME");
 if(p == NULL) return NULL;

Modified: trunk/packages/seaview/trunk/seaview.cxx
===================================================================
--- trunk/packages/seaview/trunk/seaview.cxx	2007-04-04 01:15:50 UTC (rev 244)
+++ trunk/packages/seaview/trunk/seaview.cxx	2007-04-05 00:40:24 UTC (rev 245)
@@ -225,7 +225,13 @@
 	}
 
 /* access to resources */
-quick_and_dirty = bool_res_value("fast", 0, resources);
+quick_and_dirty = bool_res_value("fast", 
+#if defined(__APPLE__) && TARGET_RT_MAC_MACHO
+	TRUE, //double buffer is done by the system, useless to add one more layer
+#else
+	FALSE,
+#endif
+	resources);
 inverted = bool_res_value("inverted", TRUE, resources);
 strcpy(save_format, get_res_value("save", possible_formats[NEXUS_FORMAT], resources) );
 strcpy(stdcolorgroups, 
@@ -324,9 +330,8 @@
 #ifdef __APPLE__ 
 MGinit_apple_events(view);
 add_apropos(progname, help_file);
-#else
+#endif
 if(masename != NULL) use_initial_file(view, masename);
-#endif
 view->dnawin->show();
 view->DNA_obj->take_focus();
 fl_reset_cursor(view->dnawin);
@@ -567,14 +572,14 @@
 char ***colseq;
 if(totseqs == 0 || numb_gc == 1) return NULL;
 colseq=(char ***)malloc(totseqs*sizeof(char **));
-if(colseq == NULL) out_of_memory();
+if(colseq == NULL) return NULL;
 for(num=0; num<totseqs; num++) {
 	colseq[num] = (char **)malloc(numb_gc * sizeof(char *));
-	if(colseq[num] == NULL) out_of_memory();
+	if(colseq[num] == NULL) return NULL;
 	l = eachlength[num];
 	for(col=0; col < numb_gc; col++) {
 		colseq[num][col]=(char *)malloc(maxlen+1);
-		if(colseq[num][col] == NULL) out_of_memory();
+		if(colseq[num][col] == NULL) return NULL;
 		memset(colseq[num][col], ' ', l);
 		colseq[num][col][l]=0;
 		}
@@ -1226,6 +1231,7 @@
 		view->max_seq_length, view->each_length, 
 		( view->protein ? get_color_for_aa : get_color_for_base ), 
 		view->numb_gc, view->allow_lower);
+	if(view->col_seq == NULL) out_of_memory();
 	view->alt_col_seq = NULL;
 	}
 view->first_seq = view->first_site = 1;
@@ -1249,6 +1255,7 @@
 	Fl_Menu_Item *items = (Fl_Menu_Item *)obj->menu();
 	items[RENAME_SEQ].deactivate();
 	items[EDIT_COMMENTS].deactivate();
+	items[EDIT_SEQ].deactivate();
 	items[DUPLICATE_SEQ].deactivate();
 	items[DELETE_SEQ].deactivate();
 	items[COMPLEMENT_SEQ].deactivate();
@@ -1675,6 +1682,7 @@
 	view->max_seq_length, view->each_length, 
 	(view->protein ? get_color_for_aa : get_color_for_base),
 	view->numb_gc, view->allow_lower);
+if(view->col_seq == NULL) out_of_memory();
 if(view->alt_colors != NO_ALT_COLORS) {
 	if(reponse >= Protein)  view->alt_colors = 
 		(color_choice)reponse;
@@ -2027,6 +2035,9 @@
 else if(reponse == EDIT_COMMENTS) {
 	edit_comments_dialog(view);
 	}
+else if(reponse == EDIT_SEQ) {
+	edit_sequence_dialog(view);
+	}
 else if(reponse == DELETE_SEQ) { /* delete selected sequences from alignment */
 	char temp[100];
 	sprintf(temp,"Confirm request of deletion of %d sequence(s)",
@@ -3289,6 +3300,7 @@
 		items[RENAME_SEQ].activate();
 		items[DUPLICATE_SEQ].activate();
 		items[EDIT_COMMENTS].activate();
+		items[EDIT_SEQ].activate();
 		if(view->protein) {
 			items[COMPLEMENT_SEQ].deactivate();
 			items[REVERSE_SEQ].deactivate();
@@ -3303,6 +3315,7 @@
 		items[RENAME_SEQ].deactivate();
 		items[DUPLICATE_SEQ].deactivate();
 		items[EDIT_COMMENTS].deactivate();
+		items[EDIT_SEQ].deactivate();
 		items[COMPLEMENT_SEQ].deactivate();
 		items[REVERSE_SEQ].deactivate();
 		}
@@ -4442,7 +4455,7 @@
 /* menu Edit */
 menu_edit = obj = add_menu("Edit");
 ((Fl_Menu_Button*)obj)->add( 
-   "Rename sequence|Edit comments|Delete sequence(s)|Create sequence|"
+   "Rename sequence|Edit comments|Edit sequence|Delete sequence(s)|Create sequence|"
    "Load sequence|Duplicate sequence|"
    "Complement sequence|Reverse sequence|Exchange Us and Ts|Align sites|"
    "Dot plot|Consensus sequence|Del. gap-only sites");

Modified: trunk/packages/seaview/trunk/seaview.h
===================================================================
--- trunk/packages/seaview/trunk/seaview.h	2007-04-04 01:15:50 UTC (rev 244)
+++ trunk/packages/seaview/trunk/seaview.h	2007-04-05 00:40:24 UTC (rev 245)
@@ -99,7 +99,7 @@
 typedef enum {NO_ALT_COLORS, USING_STANDARD_COLORS, USING_ALT_COLORS}
 	color_choice;
 
-typedef enum {RENAME_SEQ, EDIT_COMMENTS, DELETE_SEQ, CREATE_SEQ, LOAD_SEQ, 
+typedef enum {RENAME_SEQ, EDIT_COMMENTS, EDIT_SEQ, DELETE_SEQ, CREATE_SEQ, LOAD_SEQ, 
 	DUPLICATE_SEQ,
 	COMPLEMENT_SEQ, REVERSE_SEQ, EXCHANGE_UT, ALIGN_SEQS, DOT_PLOT,
 	CONSENSUS_SEQ, DELETE_GAP_ONLY_SITES}
@@ -272,6 +272,7 @@
 extern void draw_region_background(SEA_VIEW *view, int f_seq0, int l_seq0);
 extern void load_seq_dialog(SEA_VIEW *view);
 extern void edit_comments_dialog(SEA_VIEW *view);
+extern void edit_sequence_dialog(SEA_VIEW *view);
 extern void add_seq_to_align(SEA_VIEW *view, char *newname, char *newseq, 
 	int lenseq);
 extern int get_color_for_base( int key );

Modified: trunk/packages/seaview/trunk/seaview.help
===================================================================
--- trunk/packages/seaview/trunk/seaview.help	2007-04-04 01:15:50 UTC (rev 244)
+++ trunk/packages/seaview/trunk/seaview.help	2007-04-05 00:40:24 UTC (rev 245)
@@ -269,6 +269,10 @@
 
 Edit comments            To see or change comments of the currently selected
                          sequence (Comments can only be saved in mase/NEXUS).
+						 
+Edit sequence            To edit the selected sequence, typically by pasting
+                         external data, or by opening two edit sequence 
+                         windows and transferring sequence data between them.
 
 Delete sequence(s)       Deletes all selected sequences from the alignment.
 
@@ -278,12 +282,10 @@
 
 Load sequence            Allows to load a new sequence in the alignment.
                          The sequence can be typed in or pasted from a
-                         selection made in another window: drag on the
-                         sequence data, and paste it with the middle mouse 
-                         button in the `Sequence loading' window.
+                         selection made in another window.
 
 Duplicate sequence       Allows to duplicate the currently selected sequence
-                         wih prefix D_ in its name.
+                         with prefix D_ in its name.
 
 Complement sequence      Creates a new sequence equal to the complementary 
                          strand of the currently selected sequence with prefix 
@@ -447,8 +449,7 @@
 
 >>>Customization
 #ifdef __APPLE__
-Custom settings are stored as program resources; so settings require write access
-to the seaview program to be permanently changed.
+Custom settings are stored in the user's Library/Preferences folder.
 #elif __WIN32__
 Custom settings are stored in file seaview.ini in the same directory as seaview program.
 #else




More information about the debian-med-commit mailing list