ANNOUNCE: polyXmass 0.10
- From: Filippo Rusconi <maintainer polyxmass org>
- To: gnome-announce-list gnome org
- Subject: ANNOUNCE: polyXmass 0.10
- Date: Mon, 15 Jul 2002 08:50:45 -0400 (EDT)
2002-07-08 Filippo Rusconi <filippo rusconi at nowhere dot org>
* visuals-X.c (findvisual_make_canvas_items_in_GPA): corrected a
bug which appeared when drawing the find/replace line under the
monomer which were found when the found sequence element spanned
more than two lines. This was due to not setting the coordinates
of the right end of line point for the lines between the first and
the last . Now seems to work perfectly well. Indeed, finding the
whole sequence of the polymer will draw a line under all the
monomers that make the sequence!
2002-07-01 Filippo Rusconi <filippo rusconi at nowhere dot org>
* seqed-wnd-X.c (seqed_wnd_delete_sequence_portion): changed
function to take into account the fact that the user may ask the
work to be done on the indexes or the pointers in the seqcoord
parameter.
(seqed_wnd_destroy_selected_oligomer): changed function to
leverage the code in the function above:
seqed_wnd_delete_sequence_portion ().
2002-06-29 Filippo Rusconi <filippo rusconi at nowhere dot org>
* monomerutil.c (write_seq_monomerprop_plugin_chooser): added
coded which manages smoothly the cases for which the prop
corresponding to the name passed as parameter may return a NULL
function plugin when it makes no sense to write to the polymer
sequence file a prop that was set to a monomer of the
sequence. For example the FIND/REPLACE routines do set a number of
prop instances in the monomers of the polymer sequence. These prop
are not to be written to file!
(write_monomerprop_to_seq_file): added code to handle smoothly the
case when the pointer returned by
write_seq_monomerprop_plugin_chooser () is NULL. See above for an
explanation.
2002-06-28 Filippo Rusconi <filippo rusconi at nowhere dot org>
* findrep-X.c (findrep_find_results_wnd_replace_button_clicked):
added this function which is responsible for making the
replacement between a previously found motif in the sequence with
a sequence string entered by the user in a GtkEntry. Still to be
modified so that the user is asked to go on each time a
replacement should occur.
* seqed-wnd-X.c (seqed_wnd_seq_insert_into_polseq_with_string):
modified function (and name) so that it now divides the work by
first making an array of monomers with the replacement string and
next calls a new function
seqed_wnd_seq_insert_into_polseq_with_GPA () with this monomer
array.
2002-06-26 Filippo Rusconi <filippo rusconi at nowhere dot org>
* findrep-X.c (findrep_find_results_wnd_list_button_press_event):
added this handler so that when the user clicks onto a list item
with the middle (2) mouse button, the corresponding sequence
region is made visible in the sequence editor by passing to
seqed_sw_scroll_ensure_region_visible () the start and end indexes
of the region in question. This allows the user (without changing
the currently effectively selected items) to visualize the
sequence at the region of interest. This will be particularly
important for when the user will want to check if the found motif
is to be replaced or not (not yet coded, but this function was
written with this in mind).
* seqed-wnd-X.c (seqed_sw_scroll_show_cursor_and_sel): improved
the computation which gives the vertical scroll to apply to the
sequence editor scroll window so that the cursor along with the
selection be fully visible at the bottom of the window. This is by
taking into account the height of the horizontal scroll bar which
is (I did not notice this) taken into account when the size
allocation is done for the scrolled window. Depending on the Gtk
themes used, the height of this horizontal scroll bar may be as
large as the height of an icon, and this would lead to
inconsistent scroll computations. This is now fixed up to the
pixel precision.
(seqed_sw_scroll_ensure_region_visible): added this function to
compute and apply vertical scroll to the sequence editor scrolled
window so that the region passed as parameter as two monomer
indexes is fully visible in the sequence editor window. If the
region is greater than what the seqeditor window can display, the
monomer at index [start_idx] will be placed on top of the window.
2002-06-24 Filippo Rusconi <filippo rusconi at nowhere dot org>
* visuals-X.c (prop_findvisual_free): corrected a bug by using the
prop_compare_data_with_gpointer function pointer as parameter to
the function prop_find_in_GPA_with_cmp_func when searching for a
prop which had p_data pointing to a p_findvisual instance. I had
left this parameter NULL for each call, assuming (sillily) that
the default comparison (using strcmp ()) would be enough. No, it
would from time to time provide bad comparison, thus later leading
to segfaults which were apparently un-explainable. Still need to
check all this.
* findrep-X.c (findrep_find_results_wnd_list_sel_child): added a
test to verify that the widget selected did not have a findvisual
prop already. If so first forces "unsel" fo the widget. This is
necessary because if the list item widget is double clicked two
sel_child signals are received (two findvisual instances made)
with no "unsel_child" signal in between. This means that the list
ends up not being "colinear" with all the findvisual instances
stored in the seqedctxt array of visuals and in all the monomers
concerned with the visual. Which means that if an item is
unclicked, the graphical visual may not be erased from the
sequence editor window... These error did cause segfaults...
2002-06-23 Filippo Rusconi <filippo rusconi at nowhere dot org>
* contexts.h (struct _seqedctxt): added a p_visuals_propGPA
GPtrArray of prop instances which holds prop objects only aimed at
rendering on a "plugin-like" basis any kind of graphical item
needed. This process is exemplified with the rendering of the
visual hinting required in response to the finding of polymer
sequence elements. All this in visuals-X.c.
* seqed-wnd-X.c (seqed_wnd_redraw_sequence): added a routine which
iterates into the seqedctxt's p_visuals_propGPA array of
properties, responsible for rendering on a "plugin" basis all the
canvas items.
* visuals-X.c: added the file pair visuals-X.[ch] in order to
manage all the drawings that may be necessary to display what may
be needed (in the form of rendering plugin functions). To start
with, the visual feedback, that is required when the user searches
for a sequence motif in the polymer sequence, is managed by the
"findvisual" series of functions in this file.
* findrep-X.c: added the file pair findrep-X.[ch] in order to
manage all the drawings that may be necessary to display in the
sequence editor the visual feedback required for handling the
find/replace actions in the sequence. Right now, only the find
component of the find/replace pair is implemented.
* findrep.c: added the file pair findrep.[ch] to manage in order
to manage all the drawings that may be necessary to display in the
sequence editor the visual feedback required for handling the
find/replace actions in the sequence. Right now, only the find
component of the find/replace pair is implemented.
2002-06-17 Filippo Rusconi <filippo rusconi at nowhere dot org>
* prop.c (prop_compare_data_with_gpointer): created this new
function which takes a prop as the first param and a gpointer
(data) as the second param. This function is now used in the
prop_find_in_GPA_with_cmp_func () call whenever the
prop_gpointerdata_cmp () function was erroneously used. Indeed,
the latter one is only suitable to compare the data from two prop
instance pointers, and NOT from a prop instance pointer and a
gpointer. This lead to crashes which are now avoided properly.
2002-06-16 Filippo Rusconi <filippo rusconi at nowhere dot org>
* seqed-wnd-X.c (seqed_gnome_canvas_event): corrected small bug
due to feeding the monomer position calculation bad xy
coordinates.
* writeseq.c (prepare_sequence_save): added this function to
interface with some routines which had to save a polymer sequence,
and which used to call the on_save_sequence_activate () function
(the general menu handler) with a 'data' pointer pointing to the
polymer context. But when this handler is called from the general
menu, 'data' is not NULL (contrary to what I used to think) so the
test NULL-non-NULL is not operating as expected.
(on_save_sequence_as_activate): corrected a bug due to calling NOT
this function in the program's general menu handler for "sequence
save as", but calling the handler for the "sequence save" instead.
2002-06-03 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* atomedit-X.c: added icons to the atom and isotope nodes in the
GtkCTree of the atom edit window.
2002-06-02 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project: added configurability for the fonts used in the
console window, in some text displaying windows and in the
About... window. The X style font names are stored in the resource
file if the user requires so.
* progresources-X.c: greatly improved the interface by using the
powerful GtkOptionMenu widgets in all relevant places. Simplified
the code by the same token.
* about-X.c (setup_about_dialog): added a http button to the about
box so that users can easily reach the polyXmass's www site. Also
put the logo on top of the about window.
* session-mngmt-X.c: added the session-mngmt-X.[ch] file pair to
handle all the stuff pertaining to session management.
2002-06-01 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* init.c (pxm_store_session): added the
pxm_store_session/pxm_restore_session pair of functions to handle
the storing and restoring of a number of window positions
(polymer/oligomer mass data display window, mass calc options
window...) so that the user can construct a window layout that
best suits his needs, and this layout be stored.
* progresources-X.c (on_resources_prog_resources_config_activate):
added the capability of the user to clean the geometry history of
a number of windows (main program, console window, mass data
options...) and improved the handling of the "clean files history"
in the resource window.
* seqed-dnd-sel-X.h (seqed_dnd_selection_owner_set): added this
function to be called specifically by one sequence editor in
response to a selection of a sequence portion.
* seqed-dnd-sel-X.c (on_polseq_edit_copy_activate): corrected a
bug due to taking for granted that the 'data' param was NULL in
certain conditions. 'data' can contain junk material. So now the
polymer context is only the last active one. Added one function to
be called directly from the sequence editor
(seqed_dnd_selection_owner_set function).
2002-05-30 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* seqed_related_files: split the huge seqeditor-X.c file into a
number of files: seqed-wnd-X.c, seqed-pixbuf-X.c,
seqed-monicon-X.c, seqed-kbd-X.c, seqed-dnd-sel-X.c in order to
ease work on them and also as a primary step to code rewrite of
all what pertains to the sequence editor.
2002-05-26 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* seqeditor-X.c (seqed_draw_sel_polygon): when the selection
polygon is redrawn, now if some selection is made, polyXmass
claims the X selection, so that a paste is possible automatically
with the selected portion of the polymer sequence.
(seqed_update_sel_polygon): when the selection polygon is updated,
now if some selection is made, polyXmass claims the X selection,
so that a paste is possible automatically with the selected
portion of the polymer sequence.
(seqed_selection_clear): added this X selection mechanism handler
function which is called as soon as a selection is made (wherever
it be: outside the program or in another sequence editor... or in
whatever other widget which did not own the selection). This
function is responsible for destroying the currently selection
portion of the polymer sequence.
* whole_project (whole_project): changed a bunch of #define
statements to organized enum statements. Cleaned some code.
2002-05-22 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* seqeditor-X.c (seqed_insert_seq_element_into_polseq): added this
function to insert a sequence element under the form of a string
at the current cursor position in the sequence editor. If a
sequence element is selected, it is replaced by the one which is
to be inserted. A check is made on the string to make sure that it
is made of valid and known monomer codes for the concerned polymer
definition context.
(seqed_selection_received): handles the X's "selection_received"
mechanism. Calls seqed_insert_seq_element_into_polseq () with the
string gotten from the X clipboard.
(seqed_selection_get): handles the X's "selection_get"
mechanism. If a selection is currently existent, then a string is
made (by allocation) out of it, set to the clipboard data and then
freed.
(on_polseq_edit_copy_activate): added this function to handle the
copying of a currently selected polymer sequence to the X
clipboard.
(on_polseq_edit_paste_activate): added this function to handle the
pasting to the active polymer sequence of a sequence element under
the form of a string present in the X clipboard.
2002-05-15 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* monomerutil.c (make_string_with_coords_from_monomer_GPA): added
this function to handle the case for which the string to be
allocated and filled corresponds to a portion of the array of
monomers describing the sequence and not the whole array.
2002-05-12 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* progmenu-X.h (edit_menu): added Edit copy/cut/paste menus to the
main menu without having coded them yet, the same for other menus
like Find, Find again, Replace....
(file_polseq_menu): replaced some menu items so that they use the
GNOMEUIINFO_MENU_xxx macros to standardize the menu appearance.
2002-05-11 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* poldefedit-X.c (on_poldef_write_OK_clicked): when a polymer
definition is saved under another file name, this file name is now
added to the 'Recent files' history.
* writeseq.c (on_sequence_write_OK_clicked): when a polymer
sequence is saved under another file name, this file name is now
added to the 'Recent files' history.
* recent-X.c (prog_wnd_setup_recent_poldef_files_in_menu): now
handles the special case when the file name contains underscore
characters. Calls pxm_escape_underscore_strdup () before making
the menu item label.
(prog_wnd_setup_recent_poldef_files_in_menu): corrected a bug due
to calling the polymer sequence file opening function instead of
the polymer definition file function.
* globals.c (pxm_escape_underscore_strdup): will replace '_' with
"__" each time '_' occurs in string, so that the filenames
containing '_' characters are correctly displayed in menu items
(menu items take underscores as a means to make a shortcut key).
* recent-X.[ch]: created new file pair to hold all 'Recent files'
operations, so that progwindow.[ch] are not cluttered with this
stuff.
* progresources-X.c
(prog_resources_wnd_varia_polseq_recent_files_button): added in
the resource window a button to clear the list of recent polymer
sequence files.
(prog_resources_wnd_varia_poldef_recent_files_button): added in
the resource window a button to clear the list of recent polymer
definition files.
* progwindow-X.c (setup_prog_window): after creation of the main
program menu, the program now dynamically adds two subtrees (in
the File menu subtrees for polymer sequence and polymer
definition) to list the recently opened documents.
* poldefedit-X.c (open_poldef_file_with_filename): any successfully
polymer definition file is now stored in the [RECENT_POLDEF_FILES]
section of the resource file, so that upon program initialization
it will be possible to make a 'Recent files' menu subtree with the
document history.
* progmenu-X.h (all_menu_subtrees): corrected the Gnomified menu
generation so that smaller menu-specific icons are used in from of
the menu item text.
* readseq.c (open_polseq_file_with_filename): any successfully
polymer sequence file is now stored in the [RECENT_POLSEQ_FILES]
section of the resource file, so that upon program initialization
it will be possible to make a 'Recent files' menu subtree with the
document history.
* progwindow-X.c
(prog_wnd_store_polseq_file_name_to_recent_files): new function
that stores in the resource file the absolute file name passed as
parameter.
* progwindow-X.c
(prog_wnd_store_poldef_file_name_to_recent_files): new function
that stores in the resource file the absolute file name passed as
parameter.
* readseq.h: changed function name open_seq_file_with_filename
to open_polseq_file_with_filename
* progmenu-X.h (file_polseq_menu): added 'Recent files' menu
subtree for polymer sequence submenu. This subtree will be filled
with dynamically generated menu items, after the recent files'
names are read from the resource file.
* progmenu-X.h (file_poldef_menu): added 'Recent files' menu
subtree for polymer definition submenu. This subtree will be
filled with dynamically generated menu items, after the recent
files' names are read from the resource file.
2002-05-07 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* init.c (pxm_uninit_prog): main program window and console window
(this latter only if displayed) store their geometry in the
resource file for use at next program startup. If the console
window is not displayed, this is stored in the resource file so
that at next run no console window is created.
* permmodif-X.c (on_permmodif_activate): fixed a bug which
originated in a junk pointer 'data' passed to the function when
the menu item was selected (this changed after Gnomification of
the menu). The 'data' pointer was thought to contain something
valid and was used as a polymerctxt *, thus later giving a
segfault. Removed the use of the 'data'.
2002-05-03 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* cutpolymer-X.c (cutpol_smdata_wnd_fill_ctree): frozen the
GtkCTree before setting all oligomers to it, so that no flickering
is observed.
* fragpolymer-X.c (fragpol_smdata_wnd_fill_ctree): frozen the
GtkCTree before setting all fragomers to it, so that no flickering
is observed.
* searchmass-polseq-X.c (search_masses_polseq_xwin): fixed two
small memory leaks due to not freeing the memory allocated to
construct the string displaying the number of found oligomers.
(search_mass_polseq_fill_oligomer_ctree): frozen the GtkCTree
before setting all oligomers to it, so that no flickering is
observed.
(search_masses_polseq_xwin): added a widget in the progress
window, so that the currently searched mass is displayed real
time.
(search_mass_polseq_init_progress_wnd): added a cancel button so
that the search mass operation, running in the window which called
this one, can be stopped.
(search_masses_polseq_xwin): added tests to check if the user
asked that the search operation be cancelled. This is useful if
the search operation is too lengthy due to too many masses
searched or a tolerance so large that there are a huge amount of
agreeing oligomers or the mass to be searched is so big that there
are a huge number of tests for each oligomer to be done... The
search operation will be stopped very quickly since the test is
performed each time a new oligomer is tested by adding a monomer
to the elongating oligomer. That's the finest granularity for the
test that can be achieved.
* fragpolymer-X.c (fragpol_fragdata_wnd_fill_ctree): frozen the
GtkCTree before setting all fragomers to it, so that no flickering
is observed.
* cutpolymer-X.c (cutpol_cutdata_wnd_fill_ctree): frozen the
GtkCTree before setting all oligomers to it, so that no flickering
is observed.
* progwindow-X.c (on_close_all_activate): added menu item in the
main menu to close all the unmodified opened sequences.
(on_close_all_no_save_activate): added menu item in the main menu
to close with no save all the opened sequences.
* progresources-X.c
(prog_resources_wnd_show_choose_directory_window): now has a
parameter holding a string to put as a title to the file selection
window so that the user knows which directory he is choosing.
(prog_resources_wnd_show_choose_directory_window): now effectively
calls the proper function when CANCEL button is clicked upon, thus
not erasing the text entry for which the file selection window was
called.
2002-04-22 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project: release 0.09
* documentation: removed the polyXmass.pdf file from the
distribution. This file (very heavy file) has minor changes
between a version and the other, and will be distributed as a
standalone file. The package will have all the tex and other files
required to construct (using pdflatex) the pdf file.
* globals.c (pxm_log_error): the error log file is now in the
working directory of the user, as pointed to by the str_workDir
string.
2002-04-20 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* progresources-X.c
(prog_resources_wnd_set_directories_data_to_entries): added a page
in the prog resources window where the user can graphically define
the directories where he wants that the program search for
data. The reading/storage of these resource data is handled using
the gnome_config_... () functions.
* init.c (pxm_init_user_data): removed the old set of function
calls that used to retrieve config data from the ressource
files. Replaced them by the much more elegant versions of the
gnome_config_get... series.
2002-04-19 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project (configure.in) Corrected a glitch by which when
the configure script is run without the --prefix option, the
prefix was not set to "/usr/local" by default, leading to an
invalid AC_INSTALL_PATH value defined in config.h. This
AC_INSTALL_PATH is the holder of the install directory for use in
the whole program.
2002-04-19 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project (everywhere_needed): replaced "ressource" with
"resource" wherever this typo occurred. Thanks Kurt.
2002-04-18 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* progconsole-X.c (on_prog_console_window_view_activate): added a
submenu in the "View" submenu in the main menu to allow the user
to re-display the console window if it was previously closed.
* editpolseqprop-X.c (on_polseq_prop_edit_activate): added this
pair of files to handle the window in which the user can view/edit
the name/code/comment of the polymer sequence which is currently
active. Added a new "Edit" submenu in the main menu.
2002-04-17 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project: release 0.08
* init.c (pxm_init_prog): The str_installDir now uses the
autoconf-declared AC_INSTALL_PATH value which reflects the
directory that was passed to the configure script using the
--prefix= option. If no option was given the install directory
defaults to "/usr/local" according to the GNU autotools
standards. This allows to install the program in whatever
directory and removes the obligation that the installation is
performed by a priviledged user or that the /etc/polyXmassrc file
be edited by a priviledged user. Any user may install and run the
program in his home directory (note that this applies only to the
source tarball; the rpm packages are not relocatable and have to
be installed into "/usr").
* polyxmass.c (main): corrected a bug in which a string
corresponding to an argument on the command line was freed without
being duplicated first, thus leading to a segfault.
2002-04-16 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* about-X.c (setup_about_dialog): added a page to the about window
notebook in order to display the contents of the THANKS
file. Taken the opportunity to fix a small memory leak.
2002-04-13 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project (any_relevant_file): removed the use of any
"polyXmass" string in any action in the code. Each time this
string is required it is synthesized through the use of the
globally defined PACKAGE def, which comes from the configure.in
file in the first place. A particularly heavy task was the
rewriting of the functions responsible for writing XML data, since
the string "polyXmass" is part of each element as the namespace
descriminator. The documentation was updated also from this point
of view. The whole project should now be pretty fully automatable
from a autotools point of view.
* progressources-X.c: removed the proggenoptions files and
replaced them with this set. Changed the menu from options to
ressources also.
2002-04-12 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project (any_relevant_file): removed the PXM_RELEASE stuff
from configure.in and all other locations, as it has not proven
any useful. Rather it introduced inconsistencies with the rpm
packet managing which uses the release in a decoupled way with
respect of the tar.gz file (many rpm releases are done using one
same tar.gz source tarball).
* init.c (pxm_init_prog): now use g_get_current_dir () of glib to
get the current directory string (much better than using the
g_getenv ("PWD") call).
2002-04-10 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* globals.c (pxm_log_error): added the date to the string that is
written to the error logfile, so that the user knows when a
message was logged.
(pxm_log_critical): added the date to the string that is
written to the error logfile, so that the user knows when a
message was logged.
2002-04-09 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* init.c (pxm_check_user_ressource_dir_and_file): added a number
of functions which must check that the user has a ".polyxmassrc.d"
ressource directory in his $HOME directory. If not, the directory
is created. Next the program must check that in this user's
ressource directory a "polyxmassrc" is found. If not this file is
created with default values for a number of ressource
data. Finally, the course of the program initialization continues
the usual way, by reading the "polyxmassrc" ressource file in the
".polyxmassrc.d" ressource directory. This ensures that a uniform
program behaviour is achieved whenever the user runs the program
for the first time or not.
* globals.c (write_and_free_key_value_pairs_array_to_file):
brought several improvements to this function so that each line in
the configuration file is guaranteed to be ended with a newline
character. The last line in the configuration file also.
(write_key_value_to_file): made corrections so that when a line is
written to the file, it is guaranteed to be newline
character-terminated.
2002-04-08 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project (every_fputs_function_return_value_check): I used
to use the "if(result <= 0)" test to check the result from a call
to fputs () when writing a string to file. But this function
returns EOF when an error occurred, and EOF is #define (-1). This
is why I changed at every such occurrence the "if(result <= 0)" to
"if(result < 0)", so that if 0 is returned it is not considered an
error. This is because I suspect that the Mac OS X's libc returns
0 in some non-erroneous cases.
* whole_project (polymer_data): corrected in the example polymer
definition files the name of the polymer definition and the file
name itself with respect to the corresponding line in the
polymer.dic file.
* whole_project (general_program_philosophy): I will start soon
the full "Gnomification" of polyXmass. This is to take profit of
the Gnome infrastructure which will bring to polyXmass a wealth of
functionalities useful to make its use a more pleasant experience.
* init.c (pxm_init_user_data): Changed the user's configuration
file location. It was ".polyxmassrc" in $HOME, now it is
"polyxmassrc" in a hidden directory:
"$HOME/.polyxmassrc.d/polyxmassrc". The hidden directory will from
now on only contain non-hidden files, and as many configuration
files as needed. In the future, if the program is "Gnomified", the
".polyxmassrc.d" directory will be located in "$HOME/.gnome".
* proggenoptions-X.c
(prog_genoptions_wnd_apply_num_formats_button): For now I have
added the ability for the user to configure the way numerical data
are to be displayed. The handling is performed through the
standard C library printf () -like format strings that the user
defines for the atom data, for the polymer masses, for the
oligomer masses, the monomer masses and the fragomer
masses. Default values are preset in the program if the
.polyxmassrc file does not exist.
2002-04-02 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* proggenoptions-X.c (on_prefs_prog_genoptions_config_activate):
added this pair of proggenoptions-X.[ch] new files in which all
the user's .polyxmassrc file configuration data handling is going
to be installed.
2002-03-28 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* init.c (pxm_init_prog): added the popt options' parsing
feature. The program is now able to open as many files as given in
the command line. Error checking insures that these files are
effectively there. The dependency is libpopt.
(pxm_init_prog): changed the call to gnome_init () to a call to
gnome_init_with_popt_table ().
2002-03-26 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project.c (whole_project): Initialized to NULL absolutely
all the pointers during their declaration, if not initialized
immediately. This is to minimized alignment problem when polyXmass
is compiled and executed on other non GNU/Linux platforms.
* whole_project.c (whole_project): Removed the chembridge handling
from the cutpolymer and related files. This feature was
ill-designed, and I have to work on it much more to have a nice
feature. For the moment the chembridge feature is only taken into
account in the mass calculation for the whole polymer and if a
selected polymer sequence region has an intra-oligomer bridge.
2002-03-26 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project.c (whole_project): changed every occurrence of the
getline () function with the fgets () one. This is for better
portability to non-GNU systems.
* initpolseq-X.c (init_polseq_creation): fixed a bug due to not
duplicating a string before setting it as a gtk object data with
g_free as a callback function. Now polymer sequence creation
should work.
2002-03-25 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* prop.c (prop_find_in_GPA_with_cmp_func): corrected a bug that
lead in some circumstances to an infinite loop because iter would
always be 0.
2002-03-24 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* seqeditor-X.c (whole_file_in_pixbuf_related_functions): totally
rewrote all the pixbuf-generating functions (the ones for creating
NON-modified monomer pixbufs as the ones for creating composited
transparent/opaque modified monomer pixbufs). Thus modularized the
process of allocating/modifying pixbufs and eliminated serious
memory leaks. Thanks memprof.
2002-03-23 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* seqeditor-X.c (seqed_modify_monicon_at_idx): fixed a memory leak
due to not freeing an allocated string that served as the key to a
g_datalist_set_data () call. Thanks memprof.
2002-03-21 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* composition-X.c (polseq_compos_window_eventDelete): fixed a
memory leak due to not freeing the array of monomer instances
which holds the polymer monomer composition.
* whole_project (compilation_flags): added a CFLAGS definition in
the configure.in file, so that the whole project gets compiled
with the proper flags. Also, added the "`xml2-config --cflags`" to
the INCLUDES definition in the src/Makefile.am so that the
compilation occurs properly with respect to inclusion of the
/usr/include/libxml2/libxml/..h files (thanks Daniel Veillard for
kindly answering a question about the "structure has no 'children'
member" error after upgrading to libxml2-2.4.18).
* parseformula.c (parse_formula_in_symbcount_GPA): switched all
the formula parsing system from GSList to GPtrArray, which I find
much more intuitive and easy to use. Big work to make the needed
changes, as the program is very formula parsing
functions-intensive and there are calls to these formula parsing
functions everywhere. Seems OK... should be tested well.
* chembridge-X.c (on_intrapolymer_chembridge_activate): added a
new menu to let the user manage the chemical bridges in the
polymer sequence graphically. The chembridge-X.[ch] files hold all
what is necessary to view/edit/add/remove chemical bridges in the
polymer sequence. A number of functions added for this purpose.
* chembridge.c (chembridge_monomer_partners_new): added two
parameters to receive the index of the monomer partners as this
may be of interest in some occasions.
2002-03-20 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* chembridge.h (struct _chembridge): removed str_actionformula
member from the chembridge struct, since the str_name name should
be a modif instance's str_name member from which to get access to
the str_actionformula. This means that a chembridge is nothing
else than a modif instance with an str_actionformula responsible
for the bridging of two monomers. Changed the chembridge reading
plugin accordingly and all relevant functions also. ATTENTION,
this means that the polymer sequence files that included
MONOMER_CHEMBRIDGE elements have now one sub-element more than
required (the sub-element holding the action-formula should be
removed from the MONOMER_CHEMBRIDGE element, otherwise this new
version will crash.
2002-03-18 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* seqedkbd-X.c (seqed_wnd_key_press_event): moved this function
from seqeditor-X.c to seqedkbd-X.c.
(seqed_wnd_key_release_event): moved this function
from seqeditor-X.c to seqedkbd-X.c.
2002-03-15 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* fsconfig-X.c (fsconfig_pixmaps_dic_append_button): corrected a
bug in which the pixmaps.dic's list validation procedure
mistakenly checked that the graphic operations "T" or "O" were
identical to the str_modif member string of xpmfilespecif and not
str_action, so that it was never correct.
(fsconfig_pixmaps_dic_insert_button): exactly same as above.
2002-03-15 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* searchmass-polseq-X.c (search_masses_polseq_xwin): fixed small
memory leak due to not freeing 1 instance of each monoavg, calcopt
and cutopt structure after the mass search process has finished
-these are ancillary structures. Thanks memprof.
2002-03-14 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* poldefedit-X.c (on_poldef_write_OK_clicked): fixed small memory
leak due to not freeing the old filename of the polymer definition
context upon saving as a new file. Thanks memprof.
* globals.c (duplicate_text_files_from_open_descriptors): fixed a
memory leak due to not freeing the allocated string in which each
file line is read using the getline () GNU mechanism. Thanks
memprof.
* fsconfig-X.c (fsconfig_polymer_dic_refresh_file_list_button):
removed a string duplication which later was not freed. Thanks
memprof.
(fsconfig_polymer_dic_refresh_file_list_button): fixed a memory
leak due to non-required string duplication and not freeing the
string. Thanks memprof.
* contexts.c (poldefctxt_free): added a final call to g_free () so
that the poldefctxt structure itself is freed after all its
members. Thanks memprof.
* atomedit-X.c (atomctreedata_free): fixed a memory leak due to
not actually freeing the atomctreedata passed as parameter. Atom
editing/displaying is now memory leak-free.
2002-03-14 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* fragpolymer-X.c (fragpol_fragopt_wnd_init_window): this window is
now automatically closed when the sequence editor corresponding to
the polymer context for which it was opened is closed. Before the
dependency was on the polymer definition context, which was not
intuitive.
* whole_project: bunch of tiny memory leaks fixed. Memprof no more
detects memory leaks with all the allocations related to the
following tasks:
- polymer definition loading, parsing/polymer sequence
loading/displaying.
- polymer cleavage-generated oligomers
- polymer fragmentation-generated fragomers
* fragpolymer.c (fragomer_make_name_in_prop): removed a little
memory leak, detected with memprof, due to duplicating a string
and not freeing the template one. Changed so that no duplication
is required anymore.
2002-03-13 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* cutpolymer-X.c (cutpol_cutopt_wnd_init_window): this window is
now automatically closed when the sequence editor corresponding to
the polymer context for which it was opened is closed. Before the
dependency was on the polymer definition context, which was not
intuitive. Fixed a memory leak when the prop was not freed itself,
have having successfully freed its name and the p_data member
(which is the cutting options window).
* massformulautil.c (prop_monoavg_free): fixed a memory leak due
to not freeing the prop instance itself, after having freed
sucessfuly the str_name and p_data members of the prop.
2002-03-12 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* massformulautil.c (leftrightrule_free): added a call to g_free
() onto the leftrightrule itself after having freed its allocated
members.
2002-03-07 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project: bunch of tiny memory leaks fixed.
* progwindow-X.*: new set of [ch] files by renaming appwindow-X.*
* progconsole-X.*: new set of [ch] files by renaming appconsole-X.*
* fsconfig-X.*: added the pair fsconfig-X.[ch] files to hold all
the polyXmass filesystem configuration mechanisms. The editing of
both polymer.dic and pixmaps.dic files is now feasible through a
graphical interface.
2002-03-05 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* init.c (pxm_allocate_GPAs): make a call to
calcmass_big_molecule_with_all_atoms () to compute the masses for
the formula returned by ag_molecule_made_with_one_of_every_element
().
* atom.c (ag_molecule_made_with_one_of_every_element): added this
useful function -in debugging situations- to compute a huge
formula with one of every atom available to the program.
* atomedit-X.c (atom_edit_wnd_tree_column_title_click): Switched
to contextual menu for mass/error sorting instead of relying on
column title button clicking. More intuitive and reliable. Also
freeze/thaw the tree so that no flicking is observed during the
sorting of the columnar data. Using the debugging functions
calcmass_big_molecule_with_all_atoms () and
ag_molecule_made_with_one_of_every_element (), checked that
nothing else did change in the way the atoms are saved to disk.
* searchmass-polseq-X.c
(search_mass_polseq_tree_column_title_click): Switched to
contextual menu for mass/error sorting instead of relying on
column title button clicking. More intuitive and reliable.
2002-03-04 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* seqeditor-X.c (seqed_get_monicon_size_poltype): added a check
that the line read from the pixmaps.dic does not start with '#',
which is a comment.
* readseq.c (open_seq_file_with_filename): better error checking
during the many steps involved in the loading of a new polymer
sequence.
2002-03-01 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* loadxmer.c (load_test_xmer_data): added this function which does
the same as load_xmer_data, unless it does not issue warning
messages. It just returns ERR_ERR or ERR_NOERR. Used for checking
that polymer definition files are well-formed, and not because we
want to indeed load a polymer definition file for doing chemistry.
* globals.c (is_xml_format_file): added this function just to
check if the first line in a file has the XML declaration (<?xml
version="1.0"?>) without going to much in the details with the
xml_parse stuff. This is to be very quick and to make the economy
of a bunch of messages saying that parsing was wrong.
* init.c (pxm_init_user_data): all the p_userdata file/dir names
are now absolute. This eases very much the filesystem
configuration stuff. The little memory cost is very much worth
it. This is done upon parsing of the polymer.dic file, when a
polymer definition context is created, by using the str_configDir
member of the userdata structure, which is appended with the
file/dir names from the lines of polymer.dic.
2002-02-28 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* globals-X.c (fill_xpmfilespecif_GPA_from_dict): corrected little
memory leak: did not free a string if an error occurred in the
function. Corrected a file stream not being closed if an error
occured the function.
2002-02-28 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* globals.c (parse_xpmfilespecif_line_poldef_data): added, parses
lines like "protein=protein.dat|prot-dir" from the polymer.dic
configuration file. During this parsing allocates new polcfgspecif
instances and adds these to the array passed as parameter.
* globals.h (struct _polcfgspecif): added this new structure to
hold the configuration data for a given polymer definition
name. Three gchar* dynamically allocated to hold the polymer
definition name, file and monomer pixmaps directory. Remove the
str_polymerType, str_xpmDir correspondent members from the
poldefctxt structure; thus made all the verifications and
replacements in the code tree.
2002-02-27 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* writeseq.c (on_sequence_write_OK_clicked): when a sequence is
saved under another name, the filename is updated in the sequence
editor window title.
2002-02-27 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* seqeditor-X.c (seqed_toggle_dirty): now this function first set
the polymerctxt->is_dirty to the gboolean passed as parameter,
next uses this variable to set_active the checkbox in the
seqeditor window.
2002-02-26 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* appwindow-X.c (on_prog_wnd_delete_event): first checks if at
least one polymerctxt is dirty or not. If so opens a dialog
(modal) asking if the user wants to exit anyway.
* contexts.h (struct _polymerctxt): added gboolean is_dirty to
store the state of the polymerctxt. is_dirty is TRUE if the
polymerctxt has been modified, FALSE otherwise.
2002-02-26 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* contexts.h (struct _seqedctxt): removed the isWaitingForClose
member which is no more in use since a long time.
2002-02-24 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* init.c (pxm_init_user_data): now checks if the program is run as
"root". If so alerts the user and exits.
* searchmass-polseq-X.c (whole_file): fixed a number of
non-critical things, like not opening any window if nothing is to
be displayed in it. Also fixed the non-creation of an array if it
is empty, so that emtpy lines do not show in the GtkCTree widget.
* fragpolymer-X.c (mass-search-stuff): fixed a number of
non-critical things, like not opening any window if nothing is to
be displayed in it. Also fixed the non-creation of an array if it
is empty, so that emtpy lines do not show in the GtkCTree widget.
* cutpolymer-X.c (mass-search-stuff): fixed a number of
non-critical things, like not opening any window if nothing is to
be displayed in it. Also fixed the non-creation of an array if it
is empty, so that emtpy lines do not show in the GtkCTree widget.
* fragpolymer-X.c (whole_file): great rewriting of all the stuff
in this file, because now three aspects are treated in this file:
fragmenting a polymer, displaying the obtained fragomers in a new
window, allowing mass search activity from this new window,
searching masses in the array of fragomers and finally display of
the found fragomers. Preliminary testing of the [search
mass(es)/display found fragomers] functions indicates that it is
OK. Certainly needs further testing.
2002-02-23 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* searchmass-polseq-X.c (whole_file): this newly added file
contains all the functionality needed to search masses in a
polymer sequence (AND NOT in an array of preexistent oligomers,
which is WELL DIFFERENT). Preliminary testing seems to indicate
that is OK. Certainly needs further testing.
* cutpolymer-X.c (whole_file): great rewriting of all the stuff in
this file, because now three aspects are treated in this file:
cutting a polymer, displaying the obtained oligomers in a new
window, allowing mass search activity from this new window,
searching masses in the array of oligomers and finally display of
the found oligomers. Preliminary testing of the [search
mass(es)/display found oligomers] functions indicates that it is
OK. Certainly needs further testing.
2002-02-22 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* oligomer.h (struct _oligomer): added a str_name gchar * to the
structure and made modifications where required in order to
reflect this new allocated string member.
* oligomer.c (oligomer_dup): added this function, it is a deep
duplicating function, because the array of prop instances is fully
duplicated also.
* prop.c (prop_GPA_dup): added this function because it was needed
in the oligomer_dup () function. It might be used also somewhere
else in the future.
* fragpolymer.h: removed function frag_polymer_from_monomer_GPA ()
since now the sequence cannot be in the form of a string, so we do
not need any intermediate function to construct a GPtrArray of
monomer's if the sequence is in a string form.
* cutpolymer.h: removed function cut_polymer_from_monomer_GPA ()
since now the sequence cannot be in the form of a string, so we do
not need any intermediate function to construct a GPtrArray of
monomer's if the sequence is in a string form.
* polymer.h (struct _polymer): removed the str_seq member and made
all the changes in the whole project to reflect this. From now on,
a polymer sequence only exists as an ordered set of monomer
instances in the p_monomerGPA GPtrArray that belongs to a polymer
instance.
* init.c (pxm_init_prog): moved the setlocale () calls to the end
of this function, and namely after the gnome_init () call, which
apparently overrode my setlocale () calls, which left these calls
with no effect. Now finally the setlocale () "C" are taken into
account, and my numbers are correctly POSIXLY displayed even if my
LC_LANG is fr_FR!
2002-02-19 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* calcmass.c (incdecmass_formula): corrected a memory leak due to
not calling g_free () on each allocated symbcount element that
sits in the GSList that's used for calculating the mass of a
formula. This leak was particularly visible when a huge amount of
formulae had to be evaluated, as when a mass is searched in the
polymer sequence.
2002-02-15 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* cutpolymer.c (fill_oligomer_GPA_with_cutpos_GA): removed an
oligomer allocation which did not serve any purpose. This was a
memory leak.
2002-02-13 Filippo Rusconi <f rusconi lptc u-bordeaux fr>
* searchmass.h (struct _searchmass): added this new structure to
hold the mass to search for, the type avg or mono and the
tolerance. Wrote the usual allocating and freeing ancillary
functions.
2002-02-13 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* searchmass-X.c (search_mass_options_wnd_search_button): among
other functions, this new one is responsible for preparing the
field to the mass search process. Still in early stage.
* globals.c (pxm_strtod): added code to make sure the string to
convert does not contain characters different than
"0123456789.+-", and to make sure that the ".-+" characters are
present only once. Once this has been checked the function is
unchanged.
2002-02-12 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* searchmass-X.c: added this new file pair [ch] to hold functions
pertaining to the displaying of mass search results.
* searchmass.c: added this new file pair [ch] to hold data
structures and functions pertaining to mass search facilities both
in the polymer sequence and in arrays of oligomers/fragomers.
2002-02-12 Filippo Rusconi <f rusconi lptc u-bordeaux fr>
* calcmass.c (ionize_with_ionizerule_and_level): removed
G_LOG_LEVEL_MESSAGE that informed that an ionization level of 0
was requested.
2002-02-08 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* seqeditor-X.c (seqed_modify_monicon_at_idx): corrected a bug in
which the last monomer could not be modified intrinsically because
of if (idx >= p_monomerGPA->len - 1) return ERR_ERR. Removed the
"- 1". But then in the same function we had to add a test to
determine if the idx at which a new monicon was to be added was
equal or not to the length of the monicon array. If so do no use
insert, but add.
(seqed_unmodify_monicon_at_idx): corrected a bug in which the last
monomer could not be modified intrinsically because of if (idx >=
p_monomerGPA->len - 1) return ERR_ERR. Removed the "- 1". But then
in the same function we had to add a test to determine if the idx
at which a new monicon was to be added was equal or not to the
length of the monicon array. If so do no use insert, but add.
* intrmodif-X.c (intrmodif_wnd_unmodify_button_handler): now each
modify/unmodify button has its callback function because relying
on the button's label to know which button did call the sole
handler function is not secure enough with translations
starting...
(intrmodif_wnd_modify_button_handler): now each modify/unmodify
button has its callback function because relying on the button's
label to know which button did call the sole handler function is
not secure enough with translations starting...
* permmodif-X.c (permmodif_wnd_unmodify_button_handler): now each
modify/unmodify button has its callback function because relying
on the button's label to know which button did call the sole
handler function is not secure enough with translations
starting...
(permmodif_wnd_modify_button_handler): now each modify/unmodify
button has its callback function because relying on the button's
label to know which button did call the sole handler function is
not secure enough with translations starting...
2002-01-26 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* calcmass.c (calcmass_oligomer_from_string_data): removed this
function which is not useful. Now, the existence of data in the
polymer's array of monomers is made at the beginning of the mass
computation process, and if this array is NULL/empty and the
str_seq member is not, the string sequence is used to fill the
empty array. That's all. Look in
calcmass_oligomer_with_polymer_data () the call to
fill_monomer_GPA_from_string () is selfexplanatory.
2002-01-25 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* calcmass.c (calcmass_oligomer_from_GPA_data): corrected a bug in
the calculation of the masses for oligomers that are generated
with leftrightrule after cleavage, like with CyanogenBromide. The
identity of the monomer sitting at the left end or the right end
of the generated oligomer was performed by using the indexes in
p_calcopt, while we know that the endIdx of p_calcopt corresponds
to p_oligomer->endIdx +1. So, when you expect that the right end
monomer of an oligomer "M" is 'M', you find that it is 'A',
because the parent polymer sequence is "MAMIS...", and
p_calcopt->endIdx = 0+1, so 'A', and since the leftrightrule
stipulates that if the right end monomer is 'M' an actionformula
should be applied, you discover that it is not. So changed
p_monomer = g_ptr_array_index (p_polymer->p_monomerGPA,
p_calcopt->startIdx); to p_monomer = g_ptr_array_index
(p_polymer->p_monomerGPA, p_oligomer->startIdx); and the same for
endIdx.
2002-01-21 Filippo Rusconi <f rusconi lptc u-bordeaux fr>
* seqedkbd-X.c (seqed_kbd_alpha_char_handler): corrected editor
error message entry behaviour forgetting to erase an error message
when an error is corrected. Now, when a valid code character is
entered, the previous error message is erased, so the messages are
more "in-context".
* monomerutil.c (get_monomer_idx_in_array_with_code): changed the
function name is_monomer_in_array_with_code () to this one, since
it now returns the index of the found monomer in the array passed
as parameter.
* contexts.c (is_monomer_code_valid): now checks the value
returned by is_monomer_in_array_with_code () in order to know if
return TRUE or FALSE.
* seqedkbd-X.c (seqed_force_completion_building_code): changed the
function body to force completion of a building code to the sole
valid monomer code available. For example if typed "Gl" and
available codes are "G", "Gl", "Gly", "Gar", then "Gl" being valid
is evaluated without bothering with checking other available
completions. This function thus solely matches exactly the
building code.
(seqed_check_completions_building_code): This function now does
exactly what the seqed_force_completion_building_code () used to
do. It now checks for all the available completions for a given
building code. If more than one completion is available, (in the
case above, two completions are available "Gl" and "Gly") a list
of completions is displayed to the user so he can choose the right
one.
* monomerutil.c (is_monomer_in_array_with_code): now returns the
index of the found monomer, and not TRUE or FALSE. If no monomer
is found, returns -1
2002-01-13 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* init.c (pxm_init_user_data): corrected bug because initially
thought that g_get_home_dir () allocates memory for the returned
string. But it does not seem, so g_strdup () or g_strdup_printf ()
is required.
(pxm_init_user_data): in the .polyxmassrc private configuration
file, "default" is now allowed for the UserWorkDir, UserDataDir,
UserConfigDir, UserGladeDir keys. The initialization function will
replace for these "default"s, the following values respectively:
$HOME (using g_get_home_dir ()),
installDir/share/polyxmass/sequences,
installDir/share/polyxmass/config,
installDir/share/polyxmass/glade-interface. Note that "installDir"
if found in /etc/polyxmassrc. The same values are set if the
private configuration file is not found.
* initpolseq-X.c (init_polseq_creation): calls to g_strstrip ()
now ensure that in the example line "protein =
polyxmass-prot.dat", the spaces get eliminated thus being more
foolproof than if we had to rely on the user not to put spaces
around '='.
* globals.c (ag_value_from_key_and_filename): the spaces around
the '=' are no more meaningful, since a call to g_strstrip ()
removes the spaces preceding and following the value.
2002-01-11 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* poldefedit-X.c (on_poldef_read_OK_clicked): added a check to
verify if the string returned by gtk_file_selection_get_filename
() is a directory with or without file name in the end. This
check, along with action taken prevents a crash if user selects an
empty filename "".
2002-01-10 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* fragpolymer-X.c (init_fragmentation_options_wnd): now this
function receives from the on_polymer_fragmentation_activate ()
function two more parameters, respectively the start position of
the selection in the sequence editor (defining the oligomer to
fragment) and the end position (note we say position and not
indices!), so that it can display these values in the GtkEntrys in
the fragmentation options window.
2002-01-09 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* seqeditor-X.c (seqed_display_polymer_sequence): at the end of
displaying a loaded polymer sequence, now this function checks if
there are permanent modifications. If so their name is displayed
in new GtkEntry widgets at the bottom of the sequence editor
window.
* permmodif-X.c (on_permanent_modif_activate): wrote all the code
pertaining to permanent modification of polymer sequences. This
includes adding four new files: permmodif-X.[ch] and
permmodif.[ch].
2002-01-08 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* globals-X.c (pxm_quickmessage): added this interesting
all-purpose message displaying function in which up to three
buttons can be displayed with customized labels and customized
callback functions... An example of how to use it is in
seqeditor-X.c.
* whole_project: I've been working very hard on the documentation
of the program and have rewritten a great many parts of the
fragmentations code, after having found more elegant solutions
with fragrules... during writing of the manual.
* writeseq.c (on_save_sequence_activate): wrote this function. Now
saves correctly the sequence upon clicking of the sequence save
menu. Makes a backup copy of the file by appending ~ to the
filename.
(on_save_sequence_as_activate): same as above, but opens a
fileselection window for the user to select a filename. If the
selected filename corresponds to an existing file, makes a backup
copy of the file by appending ~ to the filename.
(on_sequence_write_OK_clicked): helper function which actually
saves the polymer sequence to file by calling write_seq_file ()
which exists already in the code since some time, but was unused.
* seqeditor-X.c (seqed_wnd_delete_event): now when a sequence
editor window is asked to be closed, the program checks if the
sequence is dirty. If so it asks if it should be saved.
2001-11-23 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* intrinsmodif-X.c (intrinsic_modif_wnd_apply_modif_button): after
a longish work, the modification process has been well started
coding. First the X window interface, and now starting the process
by which the modification is propagated in the polymer sequence
according to monomer specification requirements.
2001-11-15 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* readseq.c: corrected incorrect behaviour of the file selection
window when asking file name to open sequence. Now, if the
filename (only name, no path) is zero-length the window remains
open and a MESSAGE message is displayed to inform that the
selection is bad. Then the function returns ERR_NOERR.
2001-11-06 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* contexts.c (seqed_get_sel_idces_loosy): corrected a bug which
made not updatable the mass values in the selected sequence mass
data. When no sequence is acutally selected the sel_monomerIdx1 is
now set to -1 and not 0.
2001-11-03 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* fragpolymer.c (fragomer_mass_account_for_fragrule): tested the
generation of fragments with fragrules in fragspecifs, with
different combinations of thisCode/prevCode/nextCode with LC and
RC fragments. Corrected a few bugs and now seems to compute masses
correctly even taking into account the monomer modifs.
2001-11-02 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* fragspecif.h (struct _fragrule): added str_name to structure
fragrule, since I found that it might be possible that two
fragrules have the same str_thisCode and I wanted a means to
unequivocally identify fragrule instances. When a polymer type
definition file is loaded or written it is ensured that all the
fragrule instances of a fragspecif instance have different names.
* poldefedit-X.c (all_fragspecif_and_fragrule_functions): enabled
the polymer type definition window to define fragspecif instances
along with any fragrule specif. Saves the new data. Tested a bit,
seems reliable.
2001-10-30 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* prop.c (prop_GPA_free): corrected a bug due to trying to remove
two times a chembridge prop from the array in which it was,
forgetting that a chembridge prop instance autoremoves itself from
the array in which it is upon freeing of the monomer that contains
it...
2001-10-29 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* prop.c (prop_name_data_both_strings_new): added assignments to
the default stringdata dup/cmp/free functions for the relative
custom function pointers, since both name and data are
strings. The problem arose because upon freeing of oligomers (many
functions called this one) we saw prop_free () complaining that no
custom freeing function was defined.
* fragpolymer-X.c (frag_xxxxx_column_header_click): added sorting
capabilities to all the columns of the GtkCTree that displays de
fragomers. Works OK.
* fragspecif.h: add a str_comment member gchar* to both the
fragspecif and fragrule structures to allow the user to explain
the specifics of a given fragspecif or of a given
fragrule. Updated all the relevant functions that dealt with the
two struct. Eliminated from the fragspecif struct the uptoidx
member which did not serve any purpose. Also updated the document
type definition of the polyxmass-xxx.dat xml files.
* globals-X.h: added this pair of files to act exactly as
globals.h but for the X window stuff.
2001-10-28 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* monomerutil.c (is_code_in_codes_delimstring): changed from
is_code_in_codes_string because it tells better that the string in
which to check for presence of the code is a delimited string (by
default the delimiter is '@'.
2001-10-24 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* fragspecif.c (fragspecif_dup): added deep-copy-duplication
functions for fragspecif and fragrule structures.
* loadxmer.c (polymer_handler): added code to handle the reading
of the "fragspecifsection" element from a polymer definition xml
file.
* fragpolymer.h: added this file, which is the fragmentation
counterpart to the cutpolymer one.
* loadfragspecif.c (fragspecif_section_handler): new file to deal
with the loading of fragspecif data from xml file data.
* globals.h (enum): added two enums to store constant values:
FRAG_WHICH_CAP and FRAG_UPTOIDX in the fragmentation context.
* fragspecif.c (fragspecif_free): added this new file that holds
the basic data description and functionalities for the fragspecif
and fragrule new structures.
2001-10-23 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* fragspecifutil.c (fragspecif_GPA_free): added this new file to
hold utility functions for fragmentations.
* contexts.h (struct _poldefctxt): added a new p_fragspecifGPA
array of fragspecif instances member. Going to check all the code
for required changes.
* loadcleavespecif.c (leftrightrule_section_handler): tidied the
code, use of g_strdup () in place of g_malloc ()...
2001-10-21 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* calcmass.c (calcmass_oligomer_from_GPA_data): better error
checking for the leftrightrule accounting process.
(calcmass_oligomer_from_string_data): better error checking for
the leftrightrule accounting process.
2001-10-20 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* prop.c (prop_GPA_free): corrected a bug in which the prop
objects of the array were first removed from the array and next
freed. But this is one rare circumstance where this is not
possible, because for example with chembridge properties, it is
still necessary that the prop be in the array at the moment it is
freed. See prop_chembridge_free_full () to grasp the details.
* chembridge.c (prop_chembridge_free_full): corrected a bug with
freeing the name before using it to search the prop instances in
the partner monomers' array of prop instances: does not make sense
to destroy a hook that you'll need later!
2001-10-19 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* prop.c (prop_find_in_GPA_with_cmp_func): corrected a bug that
crept when I changed the parameters to the custom prop data
comparison function. There was still the two DATA, DATA parameters
that used to be there. I removed one, and now it works. This is
because, there is only one parameter now in the prototype,
indicating what is to be compare in the prop instance.
* whole_project: continued documentation and from place to place
changed some parameters' names for consistency... cosmetic
changes.
* prop.c: profoundly reworked the system of custom function
definition for prop objects containing complex structures as their
p_data member pointer. Eliminated a huge number of accessory
function (all the ones called
allocset_something_to_something_from_something () that were not
used. Changed in the whole code all the occurrences of function
calls no longer valid. Simplified considerably the parameter
system for the custom freeing function (now only pass a pointer to
a prop instance), compare function (now pass only a parameter to
indicate what is to be compared, name or data, and two pointers to
prop)...
2001-10-17 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* modifutil.c (modif_GPA_free): changed the parameter from pointer
to pointer to GPtrArray to pointer to GPtrArray.
2001-10-14 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* loadmonomer.c (monomer_load_data): moved from loadxmer.[ch] to a
new file, loadmonomer.[ch] to augment modularity.
2001-10-05 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole-project: started the process of adding the support in the
project for the Gtk-Doc-Sys. The HTML layout of this system is
really very good so I decided that I wanted to come back to
it. This corresponds to a major documentation rewrite, but this is
good, since the first one was too badly done. I'll also need to
change a number of function names since they are too long for the
documentation system. This is not bad for the project !
* init.c (pxm_init_user_data): rewrote all the configuration
loading procedure. Also modified the way the installation
directory (/usr or /usr/local or whatever) is stored for use by
the program when running : a file /etc/polyxmassrc is written with
this information both from the make install and from the rpm -ivh
(see polyxmass.spec file for details and the top_src_dir
Makefile.am for details). NOW I'm ready to make an import. But
I'll have to be careful with all the binary graphic and other
files in the import tree...
2001-10-04 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* seqeditor.c (sel_polygon_event): corrected a bug for which there
was no update of the label giving the monomer under the cursor
(without clicking) if the cursor was on top of a selected region
of the polymer sequence.
* cleavespecifutil.c (parse_monomer_codes_in_motif): corrected a
bug that crept out in "more than 1-letter code mode" polymer's
because the string in elongation while parsing the monomer code
was not null terminated. This string is now completely filled with
'\x0' chars before beginning the work, with a call memset
(str_newCode, '\x0', MAX_MONOMER_CODE_LEN+1) ;
2001-10-04 Filippo Rusconi <f rusconi at lptc u-bordeaux fr>
* globals.c (pxm_log_critical): The 'error.log' is now
'.polyxmass-error.log' and is located by default (no config on
this for the moment, that is hard coded) in the user's working
directory. This working directory is user-definable, what is not
is: the location and name of the error log file cannot be
different than this working directory and '.polyxmass-error.log'.
* whole-project: ENORMOUS work to make the project suitable for
correct autoconf/automake compilation/installation. Also worked
around rpm polyxmass.spec file so that the rpm file is constructed
with a single command line : rpm -ba polyxmass.spec. Apparently
works, but I need to check the rpm on a machine that does not have
polyxmass on it. All the files are in the top_src/src
directory. The data files are in the top_src/config directory. The
sequences are in the top_src/sequences. This makes it easy to
maintain the package with the Makefile.am files (which are
actually pretty powerful once well understood). ALSO, the
autoconf/automake system is gettext aware, and I finally got the
system to effectively display a french version of the graphical
interface. GNU gettext is pretty powerful once understood also. I
must admit having the gettext framework do what you want is not
simple at all.
2001-09-20 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* Makefile.am: switched from the libxml1 library to the one
recommended by Daniel Veillard: libxml2. Today, the installed
version at Vincennes is libxml2-2.4.3-1. Note that the libxml2
library deals with blank spaces between elements. This brings
incompatibility between the old XML parsing code and the new way
of the libxml1. This is why for the moment I have put the
following call " xmlKeepBlanksDefault (0) ; " into each file that
parses an XML file. It works. Now I can use the new libxml2
library exactly as if I did not change its version.
2001-09-15 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole-project: finished switching from my custom message logging
to the new glib facilities for message logging with different
levels. This work has involved making a review of all the messages
throughout the program, which means it has been a huge work, that
needs to be tested.
2001-08-24 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/chembridge.c
(prop_chembridge_free_remove_from_monomers): corrected a bug that
consisted of freeing first the str_name of the prop object, while
this same str_name was necessary later to free de p_data member of
the prop object. Now behaves correctly (does not crash any more)
by inverting the sequence : first free the data of the prop, next
the name.
* pxm-genutil/monomerutil.c
(read_seq_monomer_chembridge_prop_plugin): corrected a bug due to
forgetting to set the custom freeing function pointer of the
chembridge loaded from file to the proper function
(prop_chembridge_free_remove_from_monomers()); this caused using
the standard default string freeing function for the prop_free ()
process, while it was necessary to consider the p_data member of
the prop to be freed a chembridge. The new function also takes
care of removing the prop from the two partner monomers' arrays of
prop objects.
* whole_project: changed ALL the "prop system" storage basis from
GSList to GPtrArray. Ech "prop enabled" object now has a GPtrArray
* p_propGPA in which the prop objects are stored. The rest of the
functionality philosophy did not change. Note that the chembidge
prop stuff is not stable at all for the moment and requires
extensive testing.
* pxm-generic/monomer.c (monomer_code_new): now more simply uses
monomer_noprop_dup() on the monomer found in the array.
2001-08-19 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/seqeditor.c (seqed_sw_size_allocate): completely
redesigned the process by which the size of the scroll window (in
which sits the gnome_canvas of the seqeditor) is monitored real
time. Now all the resizing activity is monitored in this function,
and action is taken also here for redraw_sequence () and
cursor_draw() calls. Note that these were initially dealt with in
the seqed_wnd_event() function, which now is empty, simply
returning FALSE.
(seqed_sw_scroll_show_cursor_and_sel): added this function in
order to manage that when the window is resized, the selection (if
any) or at least the cursor still is visible in the seqeditor. If
there is a selection, it is managed that the largest portion
possible of this selection is visible, with the cursor being
visible whatever the size of the selection.
2001-08-18 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/seqeditor.c (seqed_wnd_event): when size of the
window is considerably changed, the cursor position could be
either atop of the first visible line or below the last visible
line. The correction brought in this function corrects this by
checking after the size of the seqeditor window has changed if the
cursor position is visible or not. If not, the view is scrolled
such as to bring the line that contains the cursor (for the moment
irrespective of the selection) to the first visible line in the
seqeditor.
2001-08-17 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project: changed a host of old filenames (of the ancient
epoch of glade without libglade) from xxx-i.[ch] to xxx.[ch].
* pxm-graphitf/polcompos.c (on_monomcompo_button_clicked): A new
improvement is that now the user has a checkbutton that allows him
to ask that ---even if an oligomer is currently selected--- the
monomer composition be computed for the whole polymer
sequence. This is interesting if there is a specially difficult
oligomer to select, or that the user does not want to "loose"
while still willing to compute the monomer composition of the
whole polymer sequence.
* pxm-genutil/polymerutil.c (polymer_get_monomer_compos):
corrected a bug for which a "MONOMER_MODIF" prop object was
referenced from a momoner's GSList of prop's to another monomer's
GSList of prop's without duplication, which means that when one of
the monomers was freed, the modif was freed also, and when the
other monomer was freed a corruption of memory occurred because
the modif was no more in existence.$
* pxm-graphitf/polcompos.c (on_polseq_composition): changed window
so that it is possible to start a new monomer composition
calculation without having to close the window. Now a button is
there to elicit a new monomer composition calculation. Further,
the computation of the monomer composition is now made by taking
into account if a polymer sequence portion is selected, in which
case the computation is made only on the selected oligomer. A
checkbox allows the user to ask that the computations be
incremental so that by clicking the button the monomer composition
for the polymer/oligomer is "added" to the previous one (if
existing; which is useful if the user wants to establish the
summed monomer composition of two peptides that are not joined in
the sequence, as for example when trying to get the monomer
composition of a complex oligomer made of two oligomers bridged by
a chembridge, for example).
(polseq_compos_set_data_to_clist): fixed a bug in the way the
clist item text was allocated/non allocated.
2001-08-16 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project: I corrected a number of bugs related to the way
the g_ptr_array_remove_index () function works. I used to iterate
in the array using a for loop, with incrementing the iteration
variable after each g_ptr_array_remove_index () call. This is
erroneous as if this function is called, then the length of the
array changes. I replaced all the code involved by calls like this
one : while (p_GPtrArrayName->len > 0) {p_item =
g_ptr_array_remove_index (p_GPtrArrayName->len, 0) ; g_assert
(p_item != NULL) ; item_free (p_item) ;}. And this works
perfectly. See documentation for g_ptr_array_remove_index in the
glib doc to see details.
* whole_project: I made a number of changes in the way variables
are named, mainly because I was fed up with longish function
names... I'll continue this in order to have shorter variable
names overall.
* readseq.h: change filenames loadseq.[ch] to readseq.[ch] to make
them symetrical to the writeseq.[ch]. Started the change from the
previous code for handling the monomer/polymer prop objects to the
new system of plugin functions that are called when the name of
the property is known. I decided to do this change to go on with
the pluginization that was started when the code for writing a
sequence to a file was written. Now the processes are pretty
symetrical between the way a polymer sequence is written to a XML
file and the way it is read from the XML file : pluginized.
2001-08-15 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* writeatom.c: changed "basicdata-atoms" in the XML definition
file for the atoms to "atomsdef" and consequently changed the atom
definition writing functions in this file.
* loadatom.c: changed "basicdata-atoms" in the XML definition file
for the atoms to "atomsdef" and consequently changed the atom
definition loading functions in this file.
2001-07-15 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/contexts-info.h: changed files infos-i.[ch] to
contexts-info.[ch]. Also corrected a bug in the way the
basicdatactxt name was (badly) used to be set in a GtkList without
prior duplicating it. Started the porting of the graphic interface
from the old glade way to the libglade way.
2001-07-11 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/poltype-edit.c
(on_polymer_type_save_button_clicked): saves the polymer type
definition to the same file as the one that was loaded.
* writexmer.c (polyxmass_SOURCES): added couple writexmer.[ch] in
order to set apart all the functions that are required to save a
polymer type definition (in the form of data organized into a
basicdatactxt instance) into a file.
(basicdatactxt_write_to_file): handles the calling of different
object-specific functions for writing to a file all the data that
fully characterize a polymer type definition.
(basicdatactxt_write_DTD_to_data_file): simply writes the DTD at
beginning of a file.
(basicdatactxt_write_monomer_data_to_file): iterates in a
GPtrArray of monomers to write all the data to a file.
(basicdatactxt_write_modif_data_to_file): iterates in a GPtrArray
of modifs to write all the data to a file.
(basicdatactxt_write_cleavespecif_data_to_file): iterates in a
GPtrArray of cleavespecifs to write all the data to a file.
2001-07-10 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* parseformula.c (parse_formula_symbcount_GSList): corrected a bug
in the formula parsing algorithm that missed the last atom count
when not present, instead of indicating an error condition. In
other words it did not see that "C2H4O" is bad since we cannot
determine unambiguously the count number for the 'O' atom. Now
this function returns an error upon parsing of this type of
uncomplete formulas.
2001-07-08 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* loadxmer.c (load_xmer_data): changed all the DTD's of the
polymer definition files (*.dat files) to contain only ONE
"polymerdef" item.
2001-07-05 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* writeseq.h: changed references for files writepolymer to
writeseq, and also the #def WRITEPOLYMER_H to WRITESEQ_H.
* writeseq.c (write_polymerinfo_to_seq_file): update the stuff
that goes to the file, since some informations previously not
existent in the structure are now in this structure. This file has
not been updated since already a very long time, so much code is
no more up to date.
* Makefile.am (polyxmass_SOURCES): changed file names
writepolymer.[ch] to writeseq.[ch] for coherence with files
loadseq.*.
2001-06-17 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* cutpolymer.c: huge work to set up the support for cutting a
polymer into oligomers when there are chemical bridges all over
the polymer. The calculations for the masses are not yet finished,
but the process of sorting out oligomers that are chemically
bridged to constitute conglomerated oligomers (conglomers) is
written. Fairly complex. That's all for this week. Good night.
2001-06-14 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* elemcompos.c (monomer_elem_compos_account_for_chembridge): fixed
a bug in the calculation of the elemental composition when the
chembridges for monomers are asked to be taken into account.
* loadmonomer.c (monomer_prop_load_monomer_chembridge): fixed a
bug in the monomer chembridge loading code that overwrote the
str_name chembridge member with newly read str_actionformula
string, thus leaving the str_actionformula empty (with segfault
when the mass/formula functions tried to access this
str_actionformula chembridge member).
* calcmass.c (calcmass_polymer): fixed a bug in the calculation of
the masses when the chembridges for monomers are asked to be taken
into account.
* whole_project (freeing_functions): continued changing the
paradigm of the freeing functions. Some custom prop functions were
changed from a gpointer * parameter to a normal gpointer
parameter. See item for 2001-06-10.
* pxm-generic/chembridge.h (struct _chembridge): changed the
member data of the chembridge struct. Two pointers for the partner
monomers, two gint for the monomers' indexes and two pointer for
the higher order structural entities whose pointers we might need
(gpointer's that might point either to a polymer or to an
oligomer, as when a polymer is cleaved, for example).
2001-06-10 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/polcleavage.c (init_cleavage_options_wnd): added a
GtkEntry on top of window where the string representation of the
polymerctxt pointer is displayed as a unambiguous identity number
for the polymer context that was active when the window was asked
to be opened. When results are displayed after cleavage has
occurred, the window in which they will be displayed will contain
the same identity number, so that it will be possible to know
which sequence these results originated from.
* pxm-graphitf/seqeditor-i.c (seqed_seqeditor_setup): added a
GtkEntry on top of window where the string representation of the
polymerctxt pointer is displayed as a unambiguous identity number
for the polymer context, so that when operations are performed
using this sequence editor window as active polymerctxt, it will
be possible to know what results come from this precise window and
which not. This is necessary because many seqeditor window might
be openened at one, and also with the same name, so we had to find
a way to identify them unambiguously.
* whole-project (freeing_functions): for a number of structures I
went back to the paradigm that when a free'ing function is called
to free a struct instance, the simple pointer to that instance is
passed as parameter, and not the address of this pointer. For
example, to free a monomer instance we will call monomer_free
(p_monomer) and not monomer_free (&p_monomer), with p_monomer
being monomer *. I did this because that eases a very lot the use
of those structures as p_data members of prop instances, since the
call the the custom free'ing accessory function is made much more
simpler.
2001-06-09 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* contexts.c (get_polymerctxt_from_GPtrArray): added this function
to check if a given polymerctxt is present or not in a given
GPtrArray of polymerctxt. Used to check if a polymerctxt is still
in existence in the application, by checking its presence in the
globally available p_progPolymerctxtGPtrArray GPtrArray of all the
existent polymerctxt's.
* pxm-graphitf/polcleavage.c (init_cleavage_options_wnd): big work
around the cleavespecif options. Not finished yet.
* pxm-generic/prop.c (prop_get_index_in_GSList_with_cmp_func):
corrected a bug in the call to the accessory comparison function
(two DATA first parameter were omitted).
(prop_find_in_GSList_with_cmp_func): corrected a bug in the call
to the accessory comparison function (two DATA first parameter
were omitted).
2001-06-08 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* contexts.c (basicdatactxt_free): added a new member :
masscalcOptionsWnd, pointer to the window that is responsible for
the displaying/setting of the mass calculation options for a given
basicdatactxt. Also added p_calcopt, a calcopt allocated structure
to hold permanently the settings that are either by default or set
by the user in the window described above.
2001-06-07 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/polcleavage.c (on_polseq_cleavage): added this file
which will be in charge of graphically displaying the oligomer
data obtained by cutting a polymer with a cleavage agent.
* pxm-generic/globals.h: added a pointer to the window responsible
for the displaying of the mass data for the currently selected
oligomer : progOligomerMassdataWindow.
2001-06-05 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/globals.h: added a pointer to the window responsible
for the displaying of the mass data for the entire polymer
sequence : progPolymerMassdataWindow.
* added a new file massdata-display.[ch] to handle the creation
and initialization of the window responsible for the displaying
(and setting of the relevant options) the mass values calculated
for the polymer sequence currently active. This file will be
responsible for displaying the mass data each time something
happens with the sequence.
2001-06-04 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/seqeditor-i.c (seqed_sw_size_allocate): added this
function to always trap a resize of the scroll window in which the
canvas is embedded so that we can store the size of the scroll
window into the seqedctxt member data (scrollwinHeight and
scrollwinWidth). This was necessary because we could no more take
the dimensions of the whole seqeditor window to compute all what
is needed to perform scrolling of the sequence because now the
seqeditor window no more contains only the scroll window with the
canvas, but also some other widgets, which means that its height
is no more relevant per se.
2001-05-29 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-genutil/monomerutil.c
(is_code_known_in_monomer_GPtrArray_incremental): added this
function so that we can say if a given building code could be a
monomer code or not. The function calls strstr() instead of the
strcmp() usually used to search for a monomer that has a given
str_code. Here we do not want to match exactly, we just want to
tell "L" is potentially a monomer code : indeed, there are in the
array two monomers that have the codes "Lys" and "Leu".
* pxm-graphitf/seqeditor-i.c (seqed_seqeditor_setup): reworked the
interface of the seqeditor window so that we can display more
information in the window than simply the canvas. All the
pre-existing functionality is there. But HUGE, do you hear me ?,
HUGE improvements mainly due to start of coding the functions
necessary to handle the "more-than-one-letter-only" monomer
codes. Very well under way. Dynamic display of what characters are
being typed to construct a code is coded now, and display occurs
in a GtkEntry at the bottom of the winddow. REMARKABLE libglade,
which really transforms my life. Added a file in the
glade.interface directory (seqeditor.glade).
2001-05-27 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* calcmass.c (calcmass_noncapped_monomer_GPtrArray): updated,
where relevant, the mass calculation functions to take into
account the chembridge instances that might be present in the
monomers.
* pxm-graphitf/polcompos.c (polseq_compos_init_window): this file
has been chosen to make a real world trial of libglade
functionality. No doubt that glade/libglade is going to be used a
lot in the future of the project.
* glade-interface/: added this directory to hold glade-produced
XML files that later are loaded using libglade.
* contexts.c (seqed_get_selection_indices): added this function to
get the current selection indices (with selection or simple cursor
point). The indexes returned by this function work perfectly with
the elem_compos_noncapped_monomer_GPtrArray() function. See the
explanations in the source code for this function. Handles
seamlessly the borders of the selection.
* elemcompos.c (elem_compos_noncapped_monomer_GPtrArray): added
this new file that deals with elemental composition calculations,
with a good modularization of the code, like it is for the mass
calculation routines. Now computes correctly the non-capped
polymer formula. Still needs some checking but seems robust.
* pxm-generic/globals.h (struct _calcopt): added
monomerChembridges member to tell if the chembridge objects must
be taken into account when calculating masses or elemental
compositions or ...
2001-05-25 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-genutil/monomerutil.c (is_monomer_code_syntax_OK): added
more abstraction, so that the length of the code is no more hard
coded, and the concept is as easy as "as long as the first
character is Uppercase and the total length is equal or less than
acceptable, return TRUE".
2001-05-24 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* calcmass.c (polymer_account_for_rightcap_modif): added this
helper function (along with leftcap equivalent) to decongestionate
some high level mass calculation functions.
2001-05-23 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* calcmass.c (calcmass_oligomer_with_polymer_data): changed the
way the mass calculation is performed for oligomers, considering
that it can only be done when a polymer exists for the oligomer to
point to it to get the data. Better organized the mass calculation
code in general. Still have to work out a universal solution for
computing masses taking into account modif objects, chembridge
objects. Seems difficult, I have to think on it a bit. A
possibility would be that each chemical action on a polymer
sequence might register a specific mass/formula computation
function, in order to really set up a PLUGIN system where each
newly defined object modifying a polymer sequence self accounts
for the mass/formula changes.
2001-05-19 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/atom.c (massabund_new): added this function to make
dynamic allocation of massabund objects.
(massabund_free): the obvious corollary function to the one above.
(atom_free): added a loop to iterated into the massabund GPtrArray
to free individually each massabund instance.
* loadatom.c (isotope_load_data): fixed a problem with allocation
of memory for the massabund instance.
* pxm-generic/prop.c (prop_find_in_GSList_with_cmp_func): changed
function so that initial search step relies on the str_name
parameter, which cannot be NULL.
(prop_get_index_in_GSList_with_cmp_func): same as above.
2001-05-17 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/globals.c (alloc_get_value_from_key_and_filename):
changed the file line reading system from fgets to getline since
it is more secure.
2001-05-14 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* cutpolymer.c (cutopt_free): thorough work in the cutpolymer
functions to port them to the new GPtrArray-based process of
generating the oligomers. Indeed, with the new system of
three-letter monomer codes, the string-base process of iterating
in the sequence in search for cleavage motifs is no more
valid. Which means now each time a sequence is going to be
cleaved, either it already exists as a GPtrArray of monomer's, or
its str_seq member will be converted to a GPtrArray of
monomer's. From this GPtrArray of monomer's we'll construct
oligomers that comply with the specificity dictated by the
cleavespecif object's data members. I could successfully digest a
model protein (with long monomer codes and not all of the same
length !). Still have to check if the partial cleavagages are
efficiently performed, however it must be clear that I did not
rewrite all the functions. There was a very good code base for the
oligomer generation. Simply, I had to set up a new system with the
GPtrArray iteration instead of a string sequence.
2001-05-13 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/cleavespecif.c (cleavespecif_parse): considerably
changed this function since now we use up to three letters for the
code of the monomer, which means really working out a good
solution for the parsing of the cleavespecif !
(cleavespecif_parse_motif): added this function to parse a given
motif for a cleavespecif. Indeed we have to deal with
heterogeneous stuff like this : "LysArg/DPro" as a cleavage motif
! For this we help ourselves with the function
parse_monomer_codes_in_motif () which is responsible for iterating
in "LysArg/DPro" and extracting each valid monomer code !
(parse_monomer_codes_in_motif): responsible for iteration into the
cleavage motif to check that each monomer code is valid, and find
the '/' character that symbolizes the cut position in the motif.
2001-05-11 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/cleavemotif.c (polyxmass_LDADD): changed the
cleavemotif structure to cleavespecif and the filenames
accordingly and Makefiles...
2001-05-09 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/seqeditor-i.c: added handlers for a number of keys,
specifically delete/backspace and direction keys (not all for the
moment). The seqeditor starts to act like an editor when the
keyboard is used !!!! Good night !!!!
2001-05-08 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* contexts.c (basicdatactxt_free): added GData member to hold the
correspondences between a monomer str_code string GQuark and a
GdkPixbuf*. This way we do not multiplicate anymore the graphical
data related to each monomericon pixbuf !
* whole_project: totally ported the graphic handling of the
sequence in the seqeditor from the Imlib library to the GdkPixbuf
library.
2001-05-04 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/modif.c (modif_name_new): changed the system of
arriving and leaving formulas in modif objects. Now modif only has
two strings : str_name and str_actionFormula. All the functions
and function calls in all the relevant functions in all the
relevant files have been changed to take this new approach into
account. I decided to switch to this new system because that would
allow to almost seamlessly deal with chembridge's and modif's the
same way (saving to file, displaying in lists...) since they now
have these two common member data.
* pxm-graphitf/polcompos.c (on_elem_compos_calc_button_clicked):
now when no selection is active, the paradigm is that selection is
mimicked by considering that it goes from the beginning of the
sequence until the position of the cursor (monomer left of the
cursor comprised in the simulated selection).
* calcmass.c: changed the naming of all the functions in
"inc_dec_mass_..." into "incdecmass_..." for more coherence in the
namings. Also makes shorter the function names.
* pxm-graphitf/seqeditor-i.c (seqed_display_polymer_sequence):
added code to set the values of the GtkAdjustment->step_increment
values according to the widest/highest monomericon found in the
sequence. Now clicking on the scrollbar's arrow yields good
results.
2001-05-03 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/seqeditor-i.c (seqed_w_delete_event): added code to
check if a dialog box is awaiting already an answer about closing
the sequence editor.
* contexts.h (struct _seqedctxt): added gboolean member
isWaitingForClose to set a flag when the sequence editor is on the
verge of being close, waiting for the user to answer yes or not in
the gnome dialog. The flag is tested in order to avoid opening two
identical gnome question flags (in some cases the closing by
saying yes will provoke a segfault).
* pxm-graphitf/seqeditor-i.c (redraw_sequence): changed the
position of the labels in the margin of the seqeditor window. Now
positioning of the labels is done as to give a centered position
in the y direction (with respect to height of the monomer icons)
and in the margin (in the x direction).
* whole_project: added a src/pxm-genutil directory where the
utility files are going to reside. Already populated the directory
with monomerutil.*, polymerutil.* monomerutil.*. I wanted to add
modularity in particular by putting in these files the function
calls that needed too much of other files to be in the canonical
monomer.h polymer.h oligomer.h files. I would like to render as
self contained as possible all the files contained into the
pxm-generic (primitives in fact) directory.
2001-04-27 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/monomer.c (monomer_prop_load_monomer_chembridge):
implemented loading a monomer chembridge property object from the
XML polymer sequence file.
2001-04-26 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* all_the_files: decided to better qualify the "MODIFICATION" prop
str_name member to "MONOMER_MODIF" and "IDX_MODIFICATION" TO
"IDX_MONOMER_MODIF" in prevision that other kinds of MODIF objects
be attributed to other objects than monomer's. The replacement
took place into all the project files.
2001-04-24 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/chembridge.c (chembridge_new): better thought about
the new concept of chemical bridge. Now has gained better
understanding that it will be a bondage between not necessarily
two monomers, but between every type of molecular object that can
handle GSList's of prop objects. The differentiation will be
performed by the name of the prop : "MONOMER_CHEMBRIDGE" or
"POLYMER_CHEMBRIDGE" or "OLIGOMER_CHEMBRIDGE". The basis of the
"CHEMBRIDGE" is a struct chembridge that holds an action formula a
str_name of the chmical agent, two gpointers to the partner of the
bond (of any prop-compatible type as explained above).
(chembridge_free): traditional struct freeing function.
(monomer_chembridge_prop_free): example of a custom freeing
function that will be called by the prop_free () call on a
"MONOMER_CHEMBRIDGE" prop.
(prop_monomer_chembridge_free): changed some function names so
that the type of data concerned is immediately visible :
chembridge_something, prop_monomer_chembridge_something...
(chembridge_dup): added this traditional function for a given
type.
(prop_monomer_chembridge_new): new function to take advantage of a
"new'ed" chembridge object to create a prop object that in the end
will be set to a GSList of prop objects in the object linked by
the chembridge (be it a monomer, a polymer, an oligomer...).
2001-04-22 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/chembridge.h: starting a new concept in the project
with this file : the chembridge concept. Actually a chemical
bridge is something similar to a sulfide bond, unless an
actionformula is responsible for the chemical bridge. The
chembridge concept might well be based on the prop object, being a
prop object whose name is "CHEMBRIDGE" and whose data is a pointer
to a structure that is still to be defined.
* pxm-generic/prop.c (ALL_FUNCTIONS): I've been working very hard
these days to introduce a huge level of flexibility with prop
objects. Namely, it is now easy to set up a prop object that has
really a structure as its p_data. Therefore it was necessary to
change all the functions that dealt with this p_data member of
struct prop to allow using customized free'ing, comparison,
duplication functions. The prop object now contains three pointers
to customizable functions pertaining to duplication, freeing,
comparison of NAME/DATA/BOTH of a prop object. A huge work has
been done to ensure that failback functions are set to these
pointers if no special assignation has been done. Also, these
failback functions are used whenever necessary in failback code.
2001-04-21 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/polcompos.c (on_elem_compos_calc_button_clicked):
finished dealing with this window. Added option to let user know
if she wants the polymer to be CAPPED or not. Also, when no good
info is in the ionization entry's, then the basicdatactxt
ionizerule data are used. Made testing with the string and
GPtrArray helper functions to check that elemental composition
determination is faithfully identical for the same polymer.
2001-04-20 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* calcmass.c (ionize_with_ionizerule_and_level): new function to
replace the precedent one (ionize_with_options, if remember
well). Now this function uses the ionizerule struct and a gint
ionizationLevel as a params.
2001-04-19 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* contexts.h (struct): added the ionizerule struct (as a pointer)
to the "basicdatactxt" structure, so that upon polymer definition
load (loadxmer.c) it can be filled with data read from file. Also,
this structure now contains what should be considered as the
default ionization rule for the relevant polymer sequences.
* I've added to the XML DTD two fields into the "polymer" element
: ionizeactionformula and ionizenetcharge to reflect what is
stored in the new structure ionizerule. In fact, I did this
because I think that these data are specific of a given polymer
type, with the ionize rule being "+H1" and netCharge of 1 for
usual proteins, for example; for synthetic polymers it is known
that cationization is done with Silver ("+Ag1", netCharge +1).
* pxm-generic/globals.h (struct): added the ionizerule structure
that should contain an actionFormula ("+Cd1-H1", for example)
string and a charge gint member to hold the netCharge that is
brought by making this ionization. Added the classical new'ing and
free'ing functions.
* contexts.c (polymerctxt_get_elemental_composition): added
function that makes use of two other help functions for the case
where the str_seq member of the polymer is NULL and where the
p_monomerGPtrArray is NULL. As of now the str_seq variant works
but without taking into account the ionization, since I'm in the
process of reinventing this part.
2001-04-18 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/polymer.c (polymer_get_monomer_compos_in_GPtrArray):
debugged a "processed = FALSE ;" statement which did not produce
the expected effect.
2001-04-17 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/prop.c (prop_dup_from_GSList): changed the function
name prop_get_in_GSList_new () to this one. This function
allocates a new prop object identical to the one that was found in
the GSList passed as param and which had name/value/both identical
to the param(s) passed to the function.
(prop_get_pointer_from_GSList): added this function which does not
allocate anything, but only returns a pointer to the found prop
object, exactly as the function prop_dup_from_GSList
(). Interesting when a new prop object is not required, but only a
prop pointer is needed just to make a value check, for example.
* pxm-generic/polymer.c (polymer_get_monomer_compos_in_GPtrArray):
added this function to fill a GPtrArray of monomer's with monomers
created to contain a "COUNT" prop of which value is the number of
these monomers contained into either a GPtrArray of monomers from
a polymer object or into a str_seq member of a polymer object. If
a given monomer is modified ("MODIFICATION"), then this
modification will be stored into the "reported" monomer object.
2001-04-16 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/infos-i.c (populate_polymer_list): finished writing
the functions to display some infos pertaining to the
polymerctxt's currently in memory, all the infos are displayed
into GtkEntry's and a GtkText in a window.
2001-04-15 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/seqeditor-i.c (seqed_w_focus_in_event): added this
signal handler to always know which seqeditor window had at last
the focus. Each signal gets a pointer to the polymerctxt, which is
then stored in the global variable p_lastActivePC.
(really_close_sequence_question): introduced check to see if the
close polymerctxt was stored in the global variable
p_lastActivePC, in which case the latter is set to NULL. Note that
this means that p_lastActivePC is not necessarily NON-NULL, which
means that it has to be tested each time.
(really_delete_sequence_question): introduced check to see if the
close polymerctxt was stored in the global variable
p_lastActivePC, in which case the latter is set to NULL. Note that
this means that p_lastActivePC is not necessarily NON-NULL, which
means that it has to be tested each time.
2001-04-14 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/globals.h (pxm_error): now calls
pxm_log_error_no_abort ( first with the __FILE__ and __LINE__
details, and next pxm_log_error_abort () with the arguments passed
to it. The second call effectively abort ()'s the program, but by
this time the error.log file has all the details necessary to
understand where the abort () has intervened.
* pxm-generic/globals.c (pxm_log_error_no_abort): pxm_log_error ()
changed to pxm_log_error_no_abort () and pxm_log_error_abort () in
order to be able to call more than one time the error logging
function, otherwise at the first call the abort () call would make
the program abort, without continuing the logging of error details
into the error.log file.
* pxm-generic/globals.h (pxm_error): added this macro to handle
error messages through use of two calls to pxm_log_error () first
with __FILE__ and __LINE__ and secondly with the message passed to
the macro.
(pxm_log): added this macro to handle various levels of debugging
info #ifdef DEBUG (single level warning, and multiple levels
message).
* pxm-generic/globals.c (pxm_log_error): added functionality to
append to log file (error.log in user config dir) each message
sent to this function. This is especially useful if program
crashes. Added variable list of arguments support, to allow
sending such kind of multiple parameter list to this function
directly without having to first produce a single string.
2001-04-12 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* polyxmass.c (main): removed the g_atexit () function
registration, since the cleaning functin (pxm_uninit_application
()) is called from where it has to (specifically in the function
app_window_eventDestroy ()).
* pxm-graphitf/appmenu-i.c (on_file_exit): instead of calling
gtk_main_quit (), now calls app_window_eventDestroy (NULL, NULL,
NULL) ; to delegate closing behaviour.
* pxm-graphitf/appwindow-i.c (app_window_eventDestroy): changed
function name.
(app_window_eventDelete): changed function name.
* contexts.c (polymerctxt_GPtrArray_free): removed the
g_ptr_array_remove_index () call to prevent modification of the
array length while relying on an invariant len member of the
GPtrArray to iterate through all the GPtrArray.
(basicdatactxt_GPtrArray_free): removed the
g_ptr_array_remove_index () call to prevent modification of the
array length while relying on an invariant len member of the
GPtrArray to iterate through all the GPtrArray.
2001-04-11 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/prop.c (all_functions): worked hard to change the
prop value from gchar * to gpointer, which means that now whatever
type of data can be set as prop data to an object supporting that
kind of "modification". Also changed all the functions that dealt
with prop value being a gchar * in order to make proper work with
gpointer. Added three accessory functions (pointers actually) to
the prop structure. These function pointers can be set by the user
to perform customized duplication, cleaning, comparison of the
prop data. The project compiles and run apparently ok. Some
testing will certainly be required. Good night.
2001-04-09 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* graphic_interface (infos-i.[ch]): continued implementing
functions to display informations on the basicdatactxt's currently
active in the application. Added a str_codesAsString member to
basicdatactxt to hold the string that contains all the codes for
all the monomers of a given polymer type.
* pxm-generic/polymer.c (get_polymer_type_seq_file): changed some
return values from ERR_ERR to NULL since this function returns a
pointer to gchar.
2001-04-08 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/appconsole-i.c (setup_app_console_window): added
the definition of three colors red for errors, green for messages
and blue for warnings. Starting to progressively change all the
"d_printf" code to display the errors and warnings and messages to
this console window.
* pxm-graphitf/about-i.c (setup_about_dialog): added new set of
files to deal with the "about" menu. Classical GNOME handling of
the About dialog.
2001-04-07 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/appconsole-i.c (setup_app_console_window): added a
new functionality to allow displaying of messages (error, warning)
to a console window so that the application can be started in the
background with no terminal at hand. The console window contains a
GtkText widget in which the contents of gs_appMessages (global
variable) are displayed. Some mechanism will someday allow to fix
the length of this GString, and the possibility to erase it by
asking for this.
* loadseq.c (on_file_open_OKbutton_clicked): fixed a bug that lead
to loading more than once the x_mer_data for a same polymer
type. Introduced a check to see if the basicdatactxt is new or
not.
* contexts.c (polymerctxt_free): eliminated call to
basicdatactxt_free().
(polymerctxt_new): eliminated call to basicdatactxt_new() since
this structure is allocated independently of the polymerctxt
object during the process of loading a polymer sequence (only if
no other polymer sequence of this polymer type has been loaded
already).
2001-04-06 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* whole_project: totally encapsulated the loaded polymer
sequence. Now the user will be able to load two different
sequences of two different (or more, of course) polymer types and
get the expected results either for the sequence display (this is
already positively tested) or for the mass calculations/cleavage
processes (yet to be tested/tweaked). Certainly the code will need
some cleaning because this was a semi-quick hack to check if the
total isolation of a new sequence polymer into a polymerctxt
(polymer context envelope) was feasible. Apparently yes. Good
night.
* parseformula.c (alloc_fill_elem_compo_from_seq_string): removed
this function that was called by nobody and that apparently is of
no use.
2001-04-05 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* contexts.c (basicdatactxt_new): added the traditional new'ing
and free'ing functions and other helper ones for the basidatactxt
object.
* contexts.h (struct): added the basicdatactxt struct to contain
data that fully describe the basic data for a given polymer
type. This will be useful when the application will allow loading
of more than one polymer sequence of two different (or more) types
of polymers. Each polymer sequence has to be aware of what polymer
type it is so that basicdata are visited for the right polymer
kind in order to calculate masses correctly for a given code (A is
alanine or adenine, and they do not have the same formula !). This
also applies to modification objects and cleavemotif objects !
2001-04-04 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* GOOD night (it's 00:55)
* init.c (print_prog_desc_license): modified in a way that when
'q' is pressed there is no core dump upon exiting the program
(problem with gtk_main_quit being called twice, or something like
that. In pxm_init_application () the return value of this function
is now analyzed to take specific action.
* pxm-generic/whatever-type.c (whatever-type_GPtrArray_free):
cleaned and systematized warnings and error for each function
dealing with GPtrArray freeing for atom, monomer, modif,
cleavemotif, polymer, polymerctxt... More consistency in the
warning messages and error messages is always good.
* init.c (pxm_init_application): changed the way the GPtrArray's
of either user basic data and "non changing" data are instanciated
upon initialization of the program. Two functions are now called
which do different initializations : basicdata_GPtrArray_allocate
and pxm_allocate_GPtrArrays. This makes it possible to free
GPtrArray's that are empty.
2001-04-02 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-generic/globals.h: changed the kind of array that holds all
the basic data : no more GArray's but GPtrArray's. So we
now have declared in globals.h the following GPtrArray's :
GPtrArray * p_appMainAtomGPtrArray; GPtrArray *
p_appMainMonomerGPtrArray; GPtrArray *
p_appMainModifGPtrArray; GPtrArray *
p_appMainCleavemotifGPtrArray;
GPtrArray * p_appMainPolymerGPtrArray ;
Changed all the code to add new elements, remove or access them
with the new array systems. The cut/nocut GArray's of gint's did
not change as they correspond to very little amount of
memory. Also for the p_partcleaveGArray that holds the partial
cleave's asked by the user. All the rest is now GPtrArray !
* whole_project: each time a something_free (something *
p_something) function occurred I replaced it with a something_free
(something ** pp_something) so that freeing effectively happens
entirely with NULL'ation of the *pp_something pointer. The code
compiles and executes perfectly.
* pxm-generic/prop.c (prop_free): now this function takes as
argument a pointer to pointer to prop object (&p_prop) so that
NULL'ing the passed *pp_prop works ok.
* contexts.c (polymerctxt_new): a polymerctxt (polymer context) is
a structure that contains a pointer to a polymer and a pointer to
a seqedctxt (sequence editor context). This structure contains all
the information required to characterize a given polymer sequence
either from the monomer point of view (mass calculations) and from
the display point of view (sequence editor context describing
fully the window in which the pixmaps are displayed to represent
the polymer sequence). Each time a polymer sequence is loaded, its
data are going to be stored in this structure a pointer of which
is going to be added to the p_appPolymerctxtGArray (allocated in
init.c).
* init.c (pxm_allocate_GArrays): the p_appMainPolymerGArray has
been replaced with a GArray that stores the pointers to
polymerctxt objects created upon loading of polymer sequences.
2001-04-01 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* init.c (pxm_process_command_line): by creating manually two
static seqedctxt objects I could successfully display a dna
sequence into two distinct sequence editors that were effectively
independently responding to my mouse playings ! so sequence editor
context definition like it is now seems to fulfill the requirement
of integral independence. NOTE that for the moment this is only
something "graphical" and no mass computing happens behind the
scenes... but my desire is that it will be possible to make
totally independent the way functions are called with respect to
two different polymers so that one will be able to load a protein
in a seqeditor and compute masses, while at the same time a dna is
loaded in another seqeditor, and masses can be compute also and
displayed in the same "results window" as for the protein,
depending on which seqeditor is "active". In a word, what is done
for the seqeditor context should be done for all the information
that pertains to a given polymer sequence/type that is
loaded. Full independence of the way masses and so on are
computed. Only one requirement : a given seqeditor should know
what polymer it is working on, and the polymer context should
allow to get data from the right place (protein with protein and
dna with dna).
* pxm-graphitf/seqeditor-i.c (sel_polygon_event): changed code so
that when clicking occurs inside the selection polygon no change
in the mouse X cursor is made.
* WHOLE_PROJECT/: could successfully display a protein sequence
with its set of pixmap files, and a dna sequence with its other
set of pixmap files, these latter being larger than the orther
ones. Monomer index calculations seemed to be perfectly ok.
* pxm-graphitf/seqeditor-i.c
(get_size_pixels_from_xpm_file_if_greater): finally this function
is no more used since it is possible to get from the GDK image
itself the size of the pixmap (fields rgb_width and rgb_height of
the GdkImlibImage structure). ALL THE FUNCTIONS were modified to
take a seqeditor context argument so that each action is performed
with respect to a given seqedctxt. This always in the aim to allow
multiple seqeditor running simultaneously and independently.
* pxm-graphitf/seqeditor-i.h (struct): added the seqedctxt
"sequence editor context" that holds all the variables needed to
construct and operate the sequence editor. The aim is that it
should be possible to display simultaneously multiple sequences
each one in its sequence editor, and to operate independently
these different sequence editors (sequence selection, feedback on
mouse position....).
* pxm-generic/atom.c (atom_GArray_free): added call to
g_array_free with param TRUE.
2001-03-31 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* pxm-graphitf/seqeditor-i.c (get_icon_size_pixels_from_xpm_file):
added this function to extract from xpm file the size of the
monomer icon dynamically.
(get_icon_size_pixels_from_xpm_file_if_greater): as above but
retrieval is performed only if the newly read values are superior
to the ones stored in the parameters (pointers to
gdoubles). Called when displaying a sequence into the sequence
editor, so that the largest size for monomer icons is found
amongst a number of different pixmap icon files.
2001-03-29 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* polyxmass.c (main): started working on the main window graphic
interface. I realized that I would learn much more about GTK+ and
GNOME if I were courageous to hand code the interface (which means
without the aid of Glade). This is how I will work (for the moment
at least). Added some graphic interface files in the
src/pxm-graphitf directory.
2001-03-22 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* all.project (all project): changed the organization of the
source code in order to have the possibility to compile and link
together all the files corresponding to the user basic data (atom,
monomer, modif, cleavemotif, polymer, oligomer, globals, prop...)
independently of interface and other mass calculating
functions. The main changes were to modify the file inclusion
pattern for the files in order to have them compile correctly. The
masscalcrule struct has been changed to leftfrightrule struct as
it is of wide use even outside mass calculating function. It is
now declared in globals.h. The project compile perfectly and runs
perfectly as of now. I'm now going to change the organization of
the source tree to make a library with all the code that I could
"isolate".
2001-03-18 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* cutpolymer.c (cutopt_new): added to allocated the cutopt
struct. Standardizes as far as possible the memory allocations on
the heap. The correct functioning of the polymer cutting functions
is tested OK.
* calcmass.c (cap_oligomer): changed to take into account the new
way to describe the left/right cap ending chemistry.
(cap_polymer): changed to take into account the new way to
describe the left/right cap ending chemistry.
(apply_calcmassrule): new function that is in charge of
decomposing correctly a set of chemistry reaction like
"+H1-O2+NH2" into all the different formulas "H1", "O2",
"NH2". Next it calls inc_dec_mass_formula () with the first
parameter to INC or DEC depending on the sign associated with each
formula (+ or -).
(is_lr_actionformula_OK): new, in charge of checking that a given
set of chemistry reactions described in the form "+H1-O2+NH2" is
syntactically correct and that each subformula ("H1", "O2", "NH2")
is also syntactically correct, referring to known atoms.
* loadxmer.c (polymer_handler): changed the was the chemistry that
caps the polymer is done. Now the way its works allows in one
single step to described something that arrives and something that
leaves the polymer. For example, upon leftcap capping, we can say
that we want this chemistry done : +H1-NH2, which means that a
proton is added and that a amine is eliminated.
* cleavemotif.c (cleavemotif_new): now this function "news" a
struct masscalcrule. This function is then filled upon loading of
the XML userdata file. All calculations for the oligomers
generated upon cleavage of a polymer with such a masscalcrule have
been updated.
* loadcleavemotif.h (masscalcrule_section_handler): added this
function to handle the masscalcrule section into the cleavemotif
element (in the XML userdata file).
* calcmass.c (calcmass_oligomer_code_string): exactly as below.
2001-03-17 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* calcmass.c (calcmass_oligomer_monomer_GArray): added
computations to take into account the masscalcrule parameter
passed as argument.
* calcmass.h (struct): added masscalcrule structure so that when a
cleavage is performed the user can define some chemistry to happen
to leftcap and/or rightcap of the generated oligomer. The
structure allows to define what residue has to be either at
leftcap and/or rightcap position to be modified. This is
particularly interesting in chemical cleavages where the cleavage
modifies one monomer and not the others (see the
methionine/homoserine conversion upon cleavage of a protein with
CNBr (cyanogen bromide)).
2001-02-18 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* calcmass.c (calcmass_noncapped_code_string): verified that mass
calculations are OK when an oligomer is passed with only a
"SEQUENCE" prop is given with the sequence.
(calcmass_oligomer_code_string): verified that this function
behaves correctly when an oligomer is passed with a "SEQUENCE"
prop and a number of "IDX_MODIFICATION" properties. Works for
taking into account the modifications passed as "IDX_MODIFICATION"
prop's, even if more than one prop is listed in the GSList of
prop's of the oligomer object.
(calcmass_oligomer_code_string): verified that when oligomer
contains "LEFTRIGHTCAP_OLIGOMER" prop either set to leftcap,
rightcap or both and that other prop objects give the
modifications for the leftcap and the rightcap, the mass
calculations work as expected.
(whole_project): started checking if with another set of files
(namely a DNA sequence file and a DNA userbasicdata file, we would
be dealing correctly with polymer sequences and with computing
correctly masses. YES ! "ATGC" DNA sequence is correctly loaded,
analyzed and mass is correctly computed for it.
2001-02-17 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
* cutpolymer.c (oligomer_with_options_new): verification of the
functions dealing with polymer cleavage with a cleavemotif
specification and partial cleavages also. Generation of oligomers
seem to work, property setting seems to work at least for
"PART_CLEAVAGE".
(oligomer_with_options_new): verification of the generation of the
oligomers with integration -in the form of a prop object- of the
monomer modifications that might exist in the polymer
sequence. Also verified that the polymer left/right cap
modifications are also stored in the oligomers when they are
either left or right cap terminal.
(cutpolymer_test): checked that the sequence is correctly stored
in each oligomer generated from the polymer upon cleavage (if
asked). This happens in the form of a "SEQUENCE" prop object in
the oligomer's GSList of prop objects. Works fine !
* calcmass.c (calcmass.c): verified behaviour of mass calculations
of proteic sequences when taking into account of internal modifs
and/or left/right-cap modifs : OK.
(ionize_with_options): verified that ionization gives proper mass
results (tested with hydrogen by default).
* all_project: big rework of all the project to incorporate the
GNOME helper material in prevision to starting GUI
programming. Also big rework to achieve the switch from "only
protein"-oriented calculations to "whatever-the-polymer"-oriented
calculations. Many files have been totally rewritten and a lot
have been added to modularize the code. Right now apparently the
file-loading functions and "protein" mass calculation functions
seem to work. Atom data handling seems stable. I'm in the process
of verifying all the functions that handle polymer cleavage. For
the moment I assume that the monomer code length is 1 letter
only. Later I'll manage to allow up to three letters for the code.
2001-01-11 Filippo Rusconi <f dot rusconi at lptc dot u-bordeaux dot fr>
THE SWITCH FROM massdat to polyxmass has started with : 1. a sed
automated editing of all the file with the following command :for
i in *; do sed 's/massdat/polyxmass/g' $i > "$i-moment"; mv
"$i-moment" "$i"; done THE SWITCH is now continuing with code
modifications that will bring the full polyvalence of the
application with respect to the many different kinds of polymers
that it will be able to deal with.
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]