/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* * e-selection-model-array.c: a Selection Model * * Author: * Christopher James Lahey * * (C) 2000, 2001 Ximian, Inc. */ #include #include #include "e-bit-array.h" #include "gal/util/e-util.h" #define EBA_CLASS(e) ((EBitArrayClass *)((GtkObject *)e)->klass) #define PARENT_TYPE (gtk_object_get_type ()) #define ONES ((guint32) 0xffffffff) #define BOX(n) ((n) / 32) #define OFFSET(n) (31 - ((n) % 32)) #define BITMASK(n) ((guint32)(((guint32) 0x1) << OFFSET((n)))) #define BITMASK_LEFT(n) ((((n) % 32) == 0) ? 0 : (ONES << (32 - ((n) % 32)))) #define BITMASK_RIGHT(n) ((guint32)(((guint32) ONES) >> ((n) % 32))) static GtkObjectClass *parent_class; static void e_bit_array_insert_real(EBitArray *eba, int row) { int box; int i; if(eba->bit_count >= 0) { /* Add another word if needed. */ if ((eba->bit_count & 0x1f) == 0) { eba->data = g_renew(gint, eba->data, (eba->bit_count >> 5) + 1); eba->data[eba->bit_count >> 5] = 0; } /* The box is the word that our row is in. */ box = BOX(row); /* Shift all words to the right of our box right one bit. */ for (i = eba->bit_count >> 5; i > box; i--) { eba->data[i] = (eba->data[i] >> 1) | (eba->data[i - 1] << 31); } /* Shift right half of box one bit to the right. */ eba->data[box] = (eba->data[box] & BITMASK_LEFT(row)) | ((eba->data[box] & BITMASK_RIGHT(row)) >> 1); eba->bit_count ++; } } static void e_bit_array_delete_real(EBitArray *eba, int row, gboolean move_selection_mode) { int box; int i; int last; int selected = FALSE; if(eba->bit_count >= 0) { guint32 bitmask; box = row >> 5; last = eba->bit_count >> 5; /* Build bitmasks for the left and right half of the box */ bitmask = BITMASK_RIGHT(row) >> 1; if (move_selection_mode) selected = e_bit_array_value_at(eba, row); /* Shift right half of box one bit to the left. */ eba->data[box] = (eba->data[box] & BITMASK_LEFT(row))| ((eba->data[box] & bitmask) << 1); /* Shift all words to the right of our box left one bit. */ if (box < last) { eba->data[box] &= eba->data[box + 1] >> 31; for (i = box + 1; i < last; i++) { eba->data[i] = (eba->data[i] << 1) | (eba->data[i + 1] >> 31); } /* this over-runs our memory! */ /*eba->data[i] = eba->data[i] << 1; */ } eba->bit_count --; /* Remove the last word if not needed. */ if ((eba->bit_count & 0x1f) == 0) { eba->data = g_renew(gint, eba->data, eba->bit_count >> 5); } if (move_selection_mode && selected) { e_bit_array_select_single_row (eba, row > 0 ? row - 1 : 0); } } } /* FIXME : Improve efficiency here. */ void e_bit_array_delete(EBitArray *eba, int row, int count) { int i; for (i = 0; i < count; i++) e_bit_array_delete_real(eba, row, FALSE); } /* FIXME : Improve efficiency here. */ void e_bit_array_delete_single_mode(EBitArray *eba, int row, int count) { int i; for (i = 0; i < count; i++) e_bit_array_delete_real(eba, row, TRUE); } /* FIXME : Improve efficiency here. */ void e_bit_array_insert(EBitArray *eba, int row, int count) { int i; for (i = 0; i < count; i++) e_bit_array_insert_real(eba, row); } /* FIXME: Implement this more efficiently. */ void e_bit_array_move_row(EBitArray *eba, int old_row, int new_row) { e_bit_array_delete_real(eba, old_row, FALSE); e_bit_array_insert_real(eba, new_row); } static void eba_destroy (GtkObject *object) { EBitArray *eba; eba = E_BIT_ARRAY (object); g_free(eba->data); if (GTK_OBJECT_CLASS (parent_class)->destroy) (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } /** * e_selection_model_is_row_selected * @selection: #EBitArray to check * @n: The row to check * * This routine calculates whether the given row is selected. * * Returns: %TRUE if the given row is selected */ gboolean e_bit_array_value_at (EBitArray *eba, gint n) { if (eba->bit_count < n || eba->bit_count == 0) return 0; else return (eba->data[BOX(n)] >> OFFSET(n)) & 0x1; } /** * e_selection_model_foreach * @selection: #EBitArray to traverse * @callback: The callback function to call back. * @closure: The closure * * This routine calls the given callback function once for each * selected row, passing closure as the closure. */ void e_bit_array_foreach (EBitArray *eba, EForeachFunc callback, gpointer closure) { int i; int last = (eba->bit_count + 31) / 32; for (i = 0; i < last; i++) { if (eba->data[i]) { int j; guint32 value = eba->data[i]; for (j = 0; j < 32; j++) { if (value & 0x80000000) { callback(i * 32 + j, closure); } value <<= 1; } } } } /** * e_selection_model_clear * @selection: #EBitArray to clear * * This routine clears the selection to no rows selected. */ void e_bit_array_clear(EBitArray *eba) { g_free(eba->data); eba->data = NULL; eba->bit_count = 0; } #define PART(x,n) (((x) & (0x01010101 << n)) >> n) #define SECTION(x, n) (((x) >> (n * 8)) & 0xff) /** * e_selection_model_selected_count * @selection: #EBitArray to count * * This routine calculates the number of rows selected. * * Returns: The number of rows selected in the given model. */ gint e_bit_array_selected_count (EBitArray *eba) { gint count; int i; int last; if (!eba->data) return 0; count = 0; last = BOX(eba->bit_count - 1); for (i = 0; i <= last; i++) { int j; guint32 thiscount = 0; for (j = 0; j < 8; j++) thiscount += PART(eba->data[i], j); for (j = 0; j < 4; j++) count += SECTION(thiscount, j); } return count; } /** * e_selection_model_select_all * @selection: #EBitArray to select all * * This routine selects all the rows in the given * #EBitArray. */ void e_bit_array_select_all (EBitArray *eba) { int i; if (!eba->data) eba->data = g_new0 (gint, (eba->bit_count + 31) / 32); for (i = 0; i < (eba->bit_count + 31) / 32; i ++) { eba->data[i] = ONES; } /* need to zero out the bits corresponding to the rows not selected in the last full 32 bit mask */ if (eba->bit_count % 32) { int unselected_mask = 0; int num_unselected_in_last_byte = 32 - eba->bit_count % 32; for (i = 0; i < num_unselected_in_last_byte; i ++) unselected_mask |= 1 << i; eba->data[(eba->bit_count + 31) / 32 - 1] &= ~unselected_mask; } } /** * e_selection_model_invert_selection * @selection: #EBitArray to invert * * This routine inverts all the rows in the given * #EBitArray. */ void e_bit_array_invert_selection (EBitArray *eba) { int i; if (!eba->data) eba->data = g_new0 (gint, (eba->bit_count + 31) / 32); for (i = 0; i < (eba->bit_count + 31) / 32; i ++) { eba->data[i] = ~eba->data[i]; } } int e_bit_array_bit_count (EBitArray *eba) { return eba->bit_count; } gboolean e_bit_array_cross_and (EBitArray *eba) { int i; for (i = 0; i < eba->bit_count / 32; i++) { if (eba->data[i] != ONES) return FALSE; } if ((eba->bit_count % 32) && ((eba->data[i] & BITMASK_LEFT(eba->bit_count)) != BITMASK_LEFT(eba->bit_count))) return FALSE; return TRUE; } gboolean e_bit_array_cross_or (EBitArray *eba) { int i; for (i = 0; i < eba->bit_count / 32; i++) { if (eba->data[i] != 0) return TRUE; } if ((eba->bit_count % 32) && ((eba->data[i] & BITMASK_LEFT(eba->bit_count)) != 0)) return TRUE; return FALSE; } #define OPERATE(object, i,mask,grow) ((grow) ? (((object)->data[(i)]) |= ((guint32) ~(mask))) : (((object)->data[(i)]) &= (mask))) void e_bit_array_change_one_row(EBitArray *eba, int row, gboolean grow) { int i; i = BOX(row); OPERATE(eba, i, ~BITMASK(row), grow); } void e_bit_array_change_range(EBitArray *eba, int start, int end, gboolean grow) { int i, last; if (start != end) { i = BOX(start); last = BOX(end); if (i == last) { OPERATE(eba, i, BITMASK_LEFT(start) | BITMASK_RIGHT(end), grow); } else { OPERATE(eba, i, BITMASK_LEFT(start), grow); if (grow) for (i ++; i < last; i++) eba->data[i] = ONES; else for (i ++; i < last; i++) eba->data[i] = 0; OPERATE(eba, i, BITMASK_RIGHT(end), grow); } } } void e_bit_array_select_single_row (EBitArray *eba, int row) { int i; for (i = 0; i < ((eba->bit_count + 31) / 32); i++) { if (!((i == BOX(row) && eba->data[i] == BITMASK(row)) || (i != BOX(row) && eba->data[i] == 0))) { g_free(eba->data); eba->data = g_new0(gint, (eba->bit_count + 31) / 32); eba->data[BOX(row)] = BITMASK(row); break; } } } void e_bit_array_toggle_single_row (EBitArray *eba, int row) { if (eba->data[BOX(row)] & BITMASK(row)) eba->data[BOX(row)] &= ~BITMASK(row); else eba->data[BOX(row)] |= BITMASK(row); } static void e_bit_array_init (EBitArray *eba) { eba->data = NULL; eba->bit_count = 0; } static void e_bit_array_class_init (EBitArrayClass *klass) { GtkObjectClass *object_class; parent_class = gtk_type_class (PARENT_TYPE); object_class = GTK_OBJECT_CLASS(klass); object_class->destroy = eba_destroy; } E_MAKE_TYPE(e_bit_array, "EBitArray", EBitArray, e_bit_array_class_init, e_bit_array_init, PARENT_TYPE); EBitArray * e_bit_array_new (int count) { EBitArray *eba = gtk_type_new (e_bit_array_get_type ()); eba->bit_count = count; eba->data = g_new0(gint, (eba->bit_count + 31) / 32); return eba; } 14 * Derive ETaskWidget from GtkEventBox instead of GtkFrame so that we canEttore Perazzoli2001-06-244-7/+57 * Added an EvolutionActivityClient object to libeshell, to handleEttore Perazzoli2001-06-247-158/+628 * Add code to query the ::Activity interface in theEttore Perazzoli2001-06-244-25/+88 * (Implemented deleting folders in the shell. Files changed that aren'tJason Leach2001-06-2414-51/+404 * Stylistical changes: moveEttore Perazzoli2001-06-243-33/+46 * Remove some useless `#if 0'ed code.Ettore Perazzoli2001-06-232-68/+4 * Get rid of the tons of ugly Bonobo Warnings by removing the code thatEttore Perazzoli2001-06-232-40/+12 * Update the copyrights, replacing Helix Code with Ximian andEttore Perazzoli2001-06-2356-64/+64 * Fix a bunch of stupid warnings caused by missing includes. AlsoEttore Perazzoli2001-06-235-3/+25 * Get the menu hints to work with the new status bar.Ettore Perazzoli2001-06-232-6/+56 * Add `evolution-test-component'.Ettore Perazzoli2001-06-231-0/+1 * Fix the "Quit" command so that the shell actually exits properly.Ettore Perazzoli2001-06-232-0/+7 * Implemented an Evolution::Activity interface for keeping track ofEttore Perazzoli2001-06-2319-85/+2131 * Oops, small fix.Jacob Leach2001-06-221-1/+1 * Fix bug #3409: Removing an EvolutionStorage from the shell's folderJacob Leach2001-06-223-3/+65 * Remove DB3_LDADDDan Winship2001-06-192-1/+2 * Fix the help URLsDan Winship2001-06-192-6/+9 * Check priv->uri isn't null before strcmp'ing it here too.Not Zed2001-06-132-1/+6 * Don't destroy the offline_toggle_pixmap: the offline_toggle 0wnz it.Dan Winship2001-06-122-2/+8 * Fixed folder creation on IMAP storages (by notifying bonobo listener withJason Leach2001-06-123-44/+46 * Committing the new My Evolution.Iain Holmes2001-06-096-48/+201 * Allow a NULL @shell_view arg inEttore Perazzoli2001-06-092-2/+6 * Fix splash setup to keep it from giving two Gtk-CRITICAL assertions whenJason Leach2001-06-092-14/+14 * Removed some left-over conflict indicators.Jon Trowbridge2001-06-071-2/+1 * Changed purely informational debug spew from a g_warning to a g_message.Jon Trowbridge2001-06-073-4/+22 * Changed the dialog box and added a Don't Ask Me Again button. Oh yeah!Iain Holmes2001-06-072-8/+73 * (Fix bug #3205: Component crash causes folder switch even when not needed)Jason Leach2001-06-072-4/+20 * (Fix bug #418: Save state of folder tree view)Jason Leach2001-06-075-34/+86 * Plug in all the folder tree right click menu verbs so bonobo-warningsJason Leach2001-06-064-1/+65 * (Fixing bug #1299: Shell saves shortcuts when display name changes)Jason Leach2001-06-065-12/+70 * Fix linking order for `$(DB3_LDADD)'s so that we avoid pullingEttore Perazzoli2001-06-032-2/+7 * Add some missing `$(DB3_LDADD)'s to get it to compile.Ettore Perazzoli2001-06-012-1/+6 * New function (probably should just be static).Jason Leach2001-05-3111-13/+154 * Removed an unecessary sleep(2) call, so evolution will start up 2 secondsJason Leach2001-05-316-3/+58 * Added missing castt. (setup_offline_toggle): Likewise.Federico Mena Quintero2001-05-302-3/+8 * unref the control when finished with it (setup_offline_toggle): dittoJP Rosevear2001-05-302-3/+16 * Call e_tree_node_set_expanded on the storage_set_view, not the storage_setDan Winship2001-05-292-1/+7 * add *.lo, libeshell.laDan Winship2001-05-291-0/+2 * New file. (e_pixmaps_update): Moved here from e-util to break e-utilDan Winship2001-05-285-1/+150 * Don't free the hash keys in priv->path_to_etree_node, because they'reDan Winship2001-05-272-10/+7 * Reference libeshell.la instead of libeshell.a.Peter Williams2001-05-263-19/+43 * place the shortcut bar in a framejacob berkman2001-05-262-6/+17 * Added ETSPECDIR. Added e-storage-set-view.etspec to get installed.Christopher James Lahey2001-05-2610-39/+85 * track change to the path to the ComponentPlaceholder.Chris Toshok2001-05-232-1/+7 * Add a button and an icon to toggle between online and offlineEttore Perazzoli2001-05-212-23/+201 * Implemented the "Copy Folder" and "Move Folder" menu items. Untested.Ettore Perazzoli2001-05-205-12/+302 * Add a caption to the folder selection dialog widget, and get theEttore Perazzoli2001-05-206-10/+67 * Renamed the "NewWindow" verb into "OpenFolderInNewWindow". Got theEttore Perazzoli2001-05-194-68/+97 * Create new files for the folder commands, and move the "Create newEttore Perazzoli2001-05-195-12/+181 * Change the code to pop-up the folder context menu to use the stuffEttore Perazzoli2001-05-173-42/+17 * Make the "Submit Bug Report" menu item fire up a browser withEttore Perazzoli2001-05-162-1/+27 * Add an "Evolution FAQ" entry to the Help menu, and update the existingEttore Perazzoli2001-05-162-5/+10 * Update the file name in the top comment.Ettore Perazzoli2001-05-161-1/+1 * Some demeeksifying indentation changes.Ettore Perazzoli2001-05-161-25/+16 * set the subfolder's parent to NULL so the subfolder list doesn't changejacob berkman2001-05-152-1/+10 * implement the CORBA side of dragging.Chris Toshok2001-05-122-6/+94 * add RemoveFolder menu item and verb. (folder_context_menu_remove_cb): newChris Toshok2001-05-124-8/+51 * add this define for the xml path to use when adding menu items to theChris Toshok2001-05-123-5/+26 * Ask for a folder to import into.Iain Holmes2001-05-127-20/+75 * component_new refs the object itself, so unref ours when we finish with itJP Rosevear2001-05-123-6/+11 * Lots of people seem to have "broken" local storage hierarchies. So ignoreDan Winship2001-05-122-2/+10 * the only problematic area - pass NULL for now in as the BonoboUIContainer.Chris Toshok2001-05-1110-34/+116 * Made this function static. Removed the unused variable placeholder.Christopher James Lahey2001-05-102-3/+10 * Remove get_physical_path and load_folders, and replace the calls to themDan Winship2001-05-102-178/+34 * Rename "port" to "type" here too.Dan Winship2001-05-102-1/+6 * Importer changesIain Holmes2001-05-098-153/+363 * Removed EVOLUTION_VERSION from the rest of makefiles. use VERSION instead. SoGediminas Paulauskas2001-05-081-1/+0 * Fix a free of non-malloc'ed memory introduced by my last change.Dan Winship2001-05-082-2/+5 * Added command entry for 'ToggleOffline'.Jon Trowbridge2001-05-082-2/+7 * take a physical_uri and pass it to the callback.Chris Toshok2001-05-055-4/+31 * Use type instead of portNumber.Dan Winship2001-05-053-5/+16 * Remove a line of code that caused the offline confirmation dialog toEttore Perazzoli2001-05-052-3/+7 * Undo a broken leak fix.Ettore Perazzoli2001-05-052-2/+5 * Plug more leaks.Ettore Perazzoli2001-05-044-2/+24 * Plug a leak in the folder creation dialog (a string was beingEttore Perazzoli2001-05-042-1/+6 * Plug a leak (the return value from `oaf_query()' must be freed!).Ettore Perazzoli2001-05-042-0/+7 * Change `e_shell_get_icon_path()' to only look up the Evolution imageEttore Perazzoli2001-05-042-8/+10 * Change the mode for the GtkCList in the active connection dialog to beEttore Perazzoli2001-05-042-1/+6 * Complete the shell side for supporting off-line operations, gettingEttore Perazzoli2001-05-044-21/+120 * Initial implementation for the "warning, some connections are stillEttore Perazzoli2001-05-048-22/+537 * Make the `EShellOfflineHandler' object non-floating in the constructEttore Perazzoli2001-05-032-0/+7 * Add interfaces to the shell to handle off-line operation, as well as aEttore Perazzoli2001-05-0310-1/+955 * new file.Chris Toshok2001-05-034-0/+581 * Remove $(UNICODE_LIBS).Dan Winship2001-04-263-3/+6 * free the private memberJP Rosevear2001-04-262-1/+5 * #include <glib.h> and move corresponding local includes to the top.Kjartan Maraas2001-04-2527-25/+62 * #include gnome-window-icon.hJeffrey Stedfast2001-04-242-0/+5 * Set window_icon of the splash screen to "evolution.png"Duncan Mak2001-04-222-0/+6 * #include <unistd.h>Ettore Perazzoli2001-04-182-0/+6 * Proxy events to the tooltip object properly.Christopher James Lahey2001-04-182-0/+55 * Pull up fix from the branch:Ettore Perazzoli2001-04-153-11/+49 * Do this everywhere, also fixup CLEANFILESMichael Meeks2001-04-143-2/+17 * Pull up fix from the 0-10 branch (chain the ::destroy handler forEttore Perazzoli2001-04-142-0/+7 * Implemented these.Christopher James Lahey2001-04-132-0/+23 * Don't get into an infinite loop when clicking on an IMAP storage. MightDan Winship2001-04-122-0/+11 * fix type. we want the destination interface, not source.Chris Toshok2001-04-082-1/+6 * Here goes my additional simple include fixes.Gediminas Paulauskas2001-04-053-1/+6 * Fix headers. Same here. Same here. Same here. Same here.Kjartan Maraas2001-04-056-0/+32 * set content type to utf8. fix warning. just call on_link_clicked().Gediminas Paulauskas2001-04-043-63/+61 * Don't declare debug_log as extern in evolution-shell-component-client.c,Dan Winship2001-04-043-7/+16 * Merge fix for #1117 (g-warning being emitted when clicking on storageEttore Perazzoli2001-04-043-1/+15 * Pulled up fixes from evolution-0-10-branch.Ettore Perazzoli2001-04-043-3/+50 * Iain's fix did not help, fixing myself. closes #1914Gediminas Paulauskas2001-04-032-3/+8 * Blessed by Ettore.Gediminas Paulauskas2001-04-022-0/+17 * Include <gal/util/e-util.h> here.Christopher James Lahey2001-04-012-0/+5 * If the importer can't be started, don't continueIain Holmes2001-03-312-0/+17 * Fix a crash when the evolution-importer-client tries to pass NULL for the fol...Iain Holmes2001-03-312-0/+7 * Since this is an ETree now, the signature of the double click callback hasChristopher James Lahey2001-03-312-0/+7 * add a "debug" method to tell a component to output debugging messages to aDan Winship2001-03-316-1/+77 * Remove/replace unneeded includes and move around stuff so that systemKjartan Maraas2001-03-3040-87/+221 * Use `g_strcasecmp()' instead of `strcasecmp()', just to be anal aboutEttore Perazzoli2001-03-292-2/+7 * Use strcasecmp instead of strcmp.Christopher James Lahey2001-03-292-4/+9 * Sigh. Use the right variable, idiot. And fix a crash bug thatEttore Perazzoli2001-03-292-1/+6 * In a fit of egomania, added myself to the authors array.Jon Trowbridge2001-03-282-0/+6 * Get the shell to compile by implementing a missing function.Ettore Perazzoli2001-03-272-2/+17 * Finish the DnD stuff by implementing move/copy on the shell side asEttore Perazzoli2001-03-2710-26/+423 * Refactor ELocalStorage a bit so that it's easier to implement theEttore Perazzoli2001-03-232-192/+206 * Fix some warnings, Allow the importers to import into any folder. UpdateIain Holmes2001-03-2310-37/+110 * Leak plug: free the target list after starting the drag.Ettore Perazzoli2001-03-232-2/+7 * Fix the signature of a callback for the `e_storage_set_async_create()'Ettore Perazzoli2001-03-232-1/+8 * Changed the EStorageSet API to have a single `xfer()' method insteadEttore Perazzoli2001-03-225-98/+164 * Added an xfer method to `EStorage' and `GNOME::Evolution::Storage'.Ettore Perazzoli2001-03-225-17/+99 * More DnD work. Now we handle copying and moving of folders, althoughEttore Perazzoli2001-03-224-59/+228 * renaming icons to make Miguel's speedups possibleJakub Steiner2001-03-221-0/+1 * Changed get_save_id to just return a strdup of the path. (new_storage_cb,Christopher James Lahey2001-03-222-23/+40 * Fix a stupid g_warning caused by calling EStorageSet functions on aEttore Perazzoli2001-03-212-8/+16 * s/helixcode\.com/ximian.com/ and update all the copyrights in the IDLEttore Perazzoli2001-03-218-16/+16 * Update description of the file and my email address in it.Ettore Perazzoli2001-03-211-2/+3 * StudlyCapsify struct members to match the new IDL naming standards.Ettore Perazzoli2001-03-213-14/+20 * Handle the destination side of drag and drop too.Ettore Perazzoli2001-03-213-18/+165 * make sure intelligent.h gets distedJP Rosevear2001-03-202-0/+5 * Bumped gal requirement to 0.5.99.8.Christopher James Lahey2001-03-204-244/+293 * Added a simple FIXME comment about possibly using theEttore Perazzoli2001-03-201-0/+3 * Added calls to the `EvolutionShellComponentClient' API to query theEttore Perazzoli2001-03-203-4/+109 * Sigh. Fix a few really stupid crashes in EStorageSetView.Ettore Perazzoli2001-03-202-17/+26 * Use the new DnD interfaces on the source side of DnD actions.Ettore Perazzoli2001-03-203-37/+249 * Initial step for refactoring of the DnD API for ShellComponents.Ettore Perazzoli2001-03-199-115/+114 * Added Azeri language filePablo Saratxaga2001-03-152-3/+6 * Removed .oafinfo files -- they are obsolete. Moved pixmaps fromGediminas Paulauskas2001-03-151-15/+0 * builddir != srcdir fixes. Yay!Ettore Perazzoli2001-03-142-4/+13 * Have a "Do not ask me again" box for the importers.Iain Holmes2001-03-142-12/+55 * All my changes to get the folder creation working, and the magic NetscapeIain Holmes2001-03-1315-164/+669 * Added a ShellComponent method to retrieve the selection for drag andEttore Perazzoli2001-03-087-61/+276 * Added the ability for components to specify drag/drop types, andEttore Perazzoli2001-03-088-14/+425 * Don't try to generate a Makefile in camel/providers/vee as it's empty.Kjartan Maraas2001-03-081-1/+1 * Override cursor_activated signal instead of cursor_changed signal.Christopher James Lahey2001-03-052-4/+9 * Update this again.Dan Winship2001-02-282-14/+16 * Added `accepted_dnd_mime_types' and `exported_dnd_mime_types' membersEttore Perazzoli2001-02-275-14/+26 * Don't free a const pointer.Jeffrey Stedfast2001-02-252-3/+9 * Remove a warning....DOH!Iain Holmes2001-02-241-1/+0 * Changes to allow folders to be created from a callback.Iain Holmes2001-02-243-36/+87 * add include. (show_import_wizard): update signature to that of a verb.Michael Meeks2001-02-235-76/+41 * split "highlighted" into self_highlight and child_highligh.Dan Winship2001-02-214-14/+61 * Cast this fucntion pointer.Christopher James Lahey2001-02-176-4/+21 * Ignore generated .oaf filesDan Winship2001-02-151-0/+1 * add asyncCreateFolder and asyncRemoveFolder interfaces. (UseDan Winship2001-02-158-41/+346 * Forgot thisKjartan Maraas2001-02-131-1/+1 * xml-i18n-tools setup. Mark strings for translation.Kjartan Maraas2001-02-132-2/+10 * Merge from the stable branch: display the `SUB_VERSION' in the aboutEttore Perazzoli2001-02-102-32/+49 * Change the folder selection dialog so that, when you click on "New"Ettore Perazzoli2001-02-096-23/+116 * Fix broken English.Ettore Perazzoli2001-02-062-1/+6 * Remove <config.h> #includes from the `.h' files, which is known to be,Ettore Perazzoli2001-02-0624-92/+26 * Memory leak fixIain Holmes2001-02-042-0/+6 * Inform people when they can't import a file.Iain Holmes2001-01-312-9/+22 * It's a ChangeLogIain Holmes2001-01-301-0/+7 * Remove the FIXME in the glade dialog, and put a nasty hack to change theIain Holmes2001-01-302-3/+26 * Fixed some typos.Kjartan Maraas2001-01-302-2/+6 * Change the appearance of the scroll frame in the folder creationEttore Perazzoli2001-01-282-1/+7