From: Alex de L. <ale...@us...> - 2005-03-26 17:47:20
|
Update of /cvsroot/morphix/morphixinstaller/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22213 Modified Files: interface.c support.c support.h ui.c Log Message: * syncing (some interface updates, more debug output) Index: support.c =================================================================== RCS file: /cvsroot/morphix/morphixinstaller/src/support.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** support.c 30 Aug 2004 00:50:01 -0000 1.3 --- support.c 26 Mar 2005 17:47:09 -0000 1.4 *************** *** 88,92 **** if (!pathname) { ! g_warning ("%s%s",_("Couldn't find pixmap file: "), filename); return gtk_image_new (); } --- 88,92 ---- if (!pathname) { ! g_warning (_("Couldn't find pixmap file: %s"), filename); return gtk_image_new (); } *************** *** 112,116 **** if (!pathname) { ! g_warning ("%s%s",_("Couldn't find pixmap file: "), filename); return NULL; } --- 112,116 ---- if (!pathname) { ! g_warning (_("Couldn't find pixmap file: %s"), filename); return NULL; } Index: support.h =================================================================== RCS file: /cvsroot/morphix/morphixinstaller/src/support.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** support.h 13 Feb 2003 22:19:41 -0000 1.1.1.1 --- support.h 26 Mar 2005 17:47:09 -0000 1.2 *************** *** 16,19 **** --- 16,20 ---- # undef _ # define _(String) dgettext (PACKAGE, String) + # define Q_(String) g_strip_context ((String), gettext (String)) # ifdef gettext_noop # define N_(String) gettext_noop (String) *************** *** 28,31 **** --- 29,33 ---- # define bindtextdomain(Domain,Directory) (Domain) # define _(String) (String) + # define Q_(String) g_strip_context ((String), (String)) # define N_(String) (String) #endif Index: ui.c =================================================================== RCS file: /cvsroot/morphix/morphixinstaller/src/ui.c,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** ui.c 2 Jan 2005 17:10:56 -0000 1.12 --- ui.c 26 Mar 2005 17:47:09 -0000 1.13 *************** *** 107,113 **** GdkPixbufAnimationIter *iter = data; if (gdk_pixbuf_animation_iter_advance(iter,NULL) == TRUE) { ! GdkPixbuf *pixbuf = gdk_pixbuf_animation_iter_get_pixbuf(iter); ! gtk_image_set_from_pixbuf(GTK_IMAGE(image),pixbuf); } if (timeout == 1) --- 107,116 ---- GdkPixbufAnimationIter *iter = data; + debug("Info: displaying next frame\n"); + if (gdk_pixbuf_animation_iter_advance(iter,NULL) == TRUE) { ! debug("Info: iter advance failed, reinitializing (invalid iter?)\n"); ! GdkPixbuf *pixbuf = gdk_pixbuf_animation_iter_get_pixbuf(iter); ! gtk_image_set_from_pixbuf(GTK_IMAGE(image),pixbuf); } if (timeout == 1) *************** *** 126,136 **** void DoAnimation(GtkWidget *image, gchar *path) { GdkPixbufAnimation *anim = gdk_pixbuf_animation_new_from_file(path,NULL); ! if (anim != NULL) { ! GdkPixbufAnimationIter *iter = gdk_pixbuf_animation_get_iter(anim,NULL); ! GdkPixbuf *pixbuf = gdk_pixbuf_animation_iter_get_pixbuf(iter); ! gtk_image_set_from_pixbuf(GTK_IMAGE(image),pixbuf); ! timer = g_timeout_add(100, (GSourceFunc)DoAnimationFrame,iter); ! // gtk_image_set_from_animation(GTK_IMAGE(image),anim); } } --- 129,142 ---- void DoAnimation(GtkWidget *image, gchar *path) { GdkPixbufAnimation *anim = gdk_pixbuf_animation_new_from_file(path,NULL); ! debug("Info: starting animation from: %s\n",path); ! if (anim != NULL) { ! debug("Info: animation != NULL, adding timeout to display frames of animation\n"); ! GdkPixbufAnimationIter *iter = gdk_pixbuf_animation_get_iter(anim,NULL); ! GdkPixbuf *pixbuf = gdk_pixbuf_animation_iter_get_pixbuf(iter); ! gtk_image_set_from_pixbuf(GTK_IMAGE(image),pixbuf); ! ! timer = g_timeout_add(250, (GSourceFunc)DoAnimationFrame,iter); ! // gtk_image_set_from_animation(GTK_IMAGE(image),anim); } } Index: interface.c =================================================================== RCS file: /cvsroot/morphix/morphixinstaller/src/interface.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** interface.c 15 Mar 2004 23:04:30 -0000 1.19 --- interface.c 26 Mar 2005 17:47:08 -0000 1.20 *************** *** 47,50 **** --- 47,51 ---- gtk_window_set_position (GTK_WINDOW (StartScreen), GTK_WIN_POS_CENTER); gtk_window_set_default_size (GTK_WINDOW (StartScreen), 640, 480); + gtk_window_set_type_hint (GTK_WINDOW (StartScreen), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox2 = GTK_DIALOG (StartScreen)->vbox; *************** *** 139,142 **** --- 140,144 ---- gtk_window_set_default_size (GTK_WINDOW (ErrorMessage), 640, -1); gtk_window_set_destroy_with_parent (GTK_WINDOW (ErrorMessage), TRUE); + gtk_window_set_type_hint (GTK_WINDOW (ErrorMessage), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox3 = GTK_DIALOG (ErrorMessage)->vbox; *************** *** 223,226 **** --- 225,229 ---- gtk_window_set_position (GTK_WINDOW (SelectHarddisk), GTK_WIN_POS_CENTER); gtk_window_set_default_size (GTK_WINDOW (SelectHarddisk), 640, 480); + gtk_window_set_type_hint (GTK_WINDOW (SelectHarddisk), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox5 = GTK_DIALOG (SelectHarddisk)->vbox; *************** *** 410,413 **** --- 413,417 ---- gtk_window_set_position (GTK_WINDOW (SelectSwap), GTK_WIN_POS_CENTER); gtk_window_set_default_size (GTK_WINDOW (SelectSwap), 640, 480); + gtk_window_set_type_hint (GTK_WINDOW (SelectSwap), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox6 = GTK_DIALOG (SelectSwap)->vbox; *************** *** 553,556 **** --- 557,561 ---- gtk_window_set_position (GTK_WINDOW (NoPart), GTK_WIN_POS_CENTER); gtk_window_set_default_size (GTK_WINDOW (NoPart), 640, -1); + gtk_window_set_type_hint (GTK_WINDOW (NoPart), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox7 = GTK_DIALOG (NoPart)->vbox; *************** *** 646,656 **** GtkWidget *menu3; GtkWidget *imagemenuitem1; ! GtkWidget *image34; GtkWidget *imagemenuitem2; ! GtkWidget *image35; ! GtkWidget *imagemenuitem3; ! GtkWidget *image36; ! GtkWidget *imagemenuitem4; ! GtkWidget *image37; GtkWidget *ExpertButtonRoot; GtkWidget *alignment1; --- 651,657 ---- GtkWidget *menu3; GtkWidget *imagemenuitem1; ! GtkWidget *image39; GtkWidget *imagemenuitem2; ! GtkWidget *image40; GtkWidget *ExpertButtonRoot; GtkWidget *alignment1; *************** *** 672,675 **** --- 673,677 ---- gtk_window_set_position (GTK_WINDOW (SelectRoot), GTK_WIN_POS_CENTER); gtk_window_set_default_size (GTK_WINDOW (SelectRoot), 640, 480); + gtk_window_set_type_hint (GTK_WINDOW (SelectRoot), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox8 = GTK_DIALOG (SelectRoot)->vbox; *************** *** 745,751 **** gtk_container_add (GTK_CONTAINER (menu3), imagemenuitem1); ! image34 = gtk_image_new_from_stock ("gtk-yes", GTK_ICON_SIZE_MENU); ! gtk_widget_show (image34); ! gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (imagemenuitem1), image34); imagemenuitem2 = gtk_image_menu_item_new_with_mnemonic (_("Ext 3 - Journaling File System")); --- 747,753 ---- gtk_container_add (GTK_CONTAINER (menu3), imagemenuitem1); ! image39 = gtk_image_new_from_stock ("gtk-yes", GTK_ICON_SIZE_MENU); ! gtk_widget_show (image39); ! gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (imagemenuitem1), image39); imagemenuitem2 = gtk_image_menu_item_new_with_mnemonic (_("Ext 3 - Journaling File System")); *************** *** 753,775 **** gtk_container_add (GTK_CONTAINER (menu3), imagemenuitem2); ! image35 = gtk_image_new_from_stock ("gtk-yes", GTK_ICON_SIZE_MENU); ! gtk_widget_show (image35); ! gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (imagemenuitem2), image35); ! ! imagemenuitem3 = gtk_image_menu_item_new_with_mnemonic (_("ReiserFS - Journaling File System")); ! gtk_widget_show (imagemenuitem3); ! gtk_container_add (GTK_CONTAINER (menu3), imagemenuitem3); ! ! image36 = gtk_image_new_from_stock ("gtk-yes", GTK_ICON_SIZE_MENU); ! gtk_widget_show (image36); ! gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (imagemenuitem3), image36); ! ! imagemenuitem4 = gtk_image_menu_item_new_with_mnemonic (_("XFS - Journaling File System")); ! gtk_widget_show (imagemenuitem4); ! gtk_container_add (GTK_CONTAINER (menu3), imagemenuitem4); ! ! image37 = gtk_image_new_from_stock ("gtk-yes", GTK_ICON_SIZE_MENU); ! gtk_widget_show (image37); ! gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (imagemenuitem4), image37); gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenuFS2), menu3); --- 755,761 ---- gtk_container_add (GTK_CONTAINER (menu3), imagemenuitem2); ! image40 = gtk_image_new_from_stock ("gtk-yes", GTK_ICON_SIZE_MENU); ! gtk_widget_show (image40); ! gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (imagemenuitem2), image40); gtk_option_menu_set_menu (GTK_OPTION_MENU (optionmenuFS2), menu3); *************** *** 860,870 **** GLADE_HOOKUP_OBJECT (SelectRoot, menu3, "menu3"); GLADE_HOOKUP_OBJECT (SelectRoot, imagemenuitem1, "imagemenuitem1"); ! GLADE_HOOKUP_OBJECT (SelectRoot, image34, "image34"); GLADE_HOOKUP_OBJECT (SelectRoot, imagemenuitem2, "imagemenuitem2"); ! GLADE_HOOKUP_OBJECT (SelectRoot, image35, "image35"); ! GLADE_HOOKUP_OBJECT (SelectRoot, imagemenuitem3, "imagemenuitem3"); ! GLADE_HOOKUP_OBJECT (SelectRoot, image36, "image36"); ! GLADE_HOOKUP_OBJECT (SelectRoot, imagemenuitem4, "imagemenuitem4"); ! GLADE_HOOKUP_OBJECT (SelectRoot, image37, "image37"); GLADE_HOOKUP_OBJECT (SelectRoot, ExpertButtonRoot, "ExpertButtonRoot"); GLADE_HOOKUP_OBJECT (SelectRoot, alignment1, "alignment1"); --- 846,852 ---- GLADE_HOOKUP_OBJECT (SelectRoot, menu3, "menu3"); GLADE_HOOKUP_OBJECT (SelectRoot, imagemenuitem1, "imagemenuitem1"); ! GLADE_HOOKUP_OBJECT (SelectRoot, image39, "image39"); GLADE_HOOKUP_OBJECT (SelectRoot, imagemenuitem2, "imagemenuitem2"); ! GLADE_HOOKUP_OBJECT (SelectRoot, image40, "image40"); GLADE_HOOKUP_OBJECT (SelectRoot, ExpertButtonRoot, "ExpertButtonRoot"); GLADE_HOOKUP_OBJECT (SelectRoot, alignment1, "alignment1"); *************** *** 898,901 **** --- 880,884 ---- gtk_window_set_title (GTK_WINDOW (SmallRoot), _("Morphix Install")); gtk_window_set_position (GTK_WINDOW (SmallRoot), GTK_WIN_POS_CENTER); + gtk_window_set_type_hint (GTK_WINDOW (SmallRoot), GDK_WINDOW_TYPE_HINT_DIALOG); vbox14 = GTK_DIALOG (SmallRoot)->vbox; *************** *** 1093,1096 **** --- 1076,1080 ---- gtk_window_set_position (GTK_WINDOW (EnterHost), GTK_WIN_POS_CENTER); gtk_window_set_default_size (GTK_WINDOW (EnterHost), 640, 480); + gtk_window_set_type_hint (GTK_WINDOW (EnterHost), GDK_WINDOW_TYPE_HINT_DIALOG); vbox28 = GTK_DIALOG (EnterHost)->vbox; *************** *** 1226,1229 **** --- 1210,1214 ---- gtk_window_set_position (GTK_WINDOW (EnterRoot), GTK_WIN_POS_CENTER); gtk_window_set_default_size (GTK_WINDOW (EnterRoot), 640, 480); + gtk_window_set_type_hint (GTK_WINDOW (EnterRoot), GDK_WINDOW_TYPE_HINT_DIALOG); vbox31 = GTK_DIALOG (EnterRoot)->vbox; *************** *** 1393,1396 **** --- 1378,1382 ---- gtk_window_set_position (GTK_WINDOW (EnterUser), GTK_WIN_POS_CENTER); gtk_window_set_default_size (GTK_WINDOW (EnterUser), 640, 480); + gtk_window_set_type_hint (GTK_WINDOW (EnterUser), GDK_WINDOW_TYPE_HINT_DIALOG); vbox34 = GTK_DIALOG (EnterUser)->vbox; *************** *** 1588,1591 **** --- 1574,1578 ---- gtk_window_set_position (GTK_WINDOW (SelectBoot), GTK_WIN_POS_CENTER); gtk_window_set_default_size (GTK_WINDOW (SelectBoot), 640, 480); + gtk_window_set_type_hint (GTK_WINDOW (SelectBoot), GDK_WINDOW_TYPE_HINT_DIALOG); vbox37 = GTK_DIALOG (SelectBoot)->vbox; *************** *** 1775,1778 **** --- 1762,1766 ---- gtk_window_set_position (GTK_WINDOW (EndScreen), GTK_WIN_POS_CENTER); gtk_window_set_default_size (GTK_WINDOW (EndScreen), 640, 480); + gtk_window_set_type_hint (GTK_WINDOW (EndScreen), GDK_WINDOW_TYPE_HINT_DIALOG); vbox40 = GTK_DIALOG (EndScreen)->vbox; *************** *** 1907,1910 **** --- 1895,1899 ---- gtk_window_set_default_size (GTK_WINDOW (ErrorLabel), 640, -1); gtk_window_set_destroy_with_parent (GTK_WINDOW (ErrorLabel), TRUE); + gtk_window_set_type_hint (GTK_WINDOW (ErrorLabel), GDK_WINDOW_TYPE_HINT_DIALOG); vbox45 = GTK_DIALOG (ErrorLabel)->vbox; *************** *** 1972,1975 **** --- 1961,1965 ---- gtk_window_set_position (GTK_WINDOW (HelpDialog), GTK_WIN_POS_CENTER); gtk_window_set_destroy_with_parent (GTK_WINDOW (HelpDialog), TRUE); + gtk_window_set_type_hint (GTK_WINDOW (HelpDialog), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox9 = GTK_DIALOG (HelpDialog)->vbox; *************** *** 2003,2008 **** gtk_text_view_set_left_margin (GTK_TEXT_VIEW (textview3), 5); gtk_text_view_set_right_margin (GTK_TEXT_VIEW (textview3), 5); ! gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview3)), ! _("Welcome to the Morphix Installer Help!\nEach step has a short summery here, that might help you out on making a choice. If you really aren't sure, drop by on our website and ask away! If people can't find their way around here we'd like to hear it, as this installer was made for even the most newest users to be able to install a working Morphix/Debian system...\n\nStep 1: Harddisk selection\n\nHere you must select the harddisk on which you want Morphix to be installed. Try to identify your harddisk on the size if you have multiple disks. If you only have one, well, then you won't have a lot to choose...\n\nWhen you click 'Forward', partition tool you selected will be started. Try to make a Linux and a Linux swap partition. Note that the former must be at least 2 GiB, the latter should be about 256MB.\n\nStep 2: Swap selection\n\nIf you have created a swap partition in Step 1, you can select it here. You can also do without swap, and things will probably work normal, but we advise making a swap partition anyway.\n\nStep 3: Root partition selection\n\nSelect the partition where you want to install Morphix on. After Step 1 you should have made a Linux partition, if you did you can select it here. If you didn't, go back to Step 1 and try again. You really need one!\n\nSelect the appropriate filesystem. If you don't care about this, take the default, \"ext3\".\n\n- ext2: the 'safe and sure' filesystem, tried and tested for years in the Linux community. However, you need to neatly unmount this filesystem, and it needs periodic checking. \n\n- ext3: ext2 but with journaling. This keeps track of every change that takes place, so if you accidently pull the plug (or Matty does), you just plug it back in and it will quickly sort out any errors on your disk. It's our default.\n\n- reiserfs: better in some ways, worse in others. Does have less tools and isn't compatible with ext2 or ext3.\n\n- xfs: the journaling filesystem from SGI. High-quality, high-speed. If you are reading this, you most likely don't want to use it. \n\nNow, sit back. Watch the dancing penguin as the files are copied. Or surf the web, play a game, it doesn't matter. That's the fun about installing Morphix: you can do other stuff while it's busy.\n\nStep 5: Configuring Hostname\n\nThere isn't much to say about this. Give your PC a name. Any name. We don't care. Honest. \n\nStep 6: Configuring Root account\n\nThe Root account is the system administrator. He can do anything. You generally shouldn't use this account, unless you really have to. You can break stuff as root, really. Think up a password thats pretty long, write it down and put it somewhere far away. If you forget it, we won't help you. Not much, anyway.\n\nStep 7: Configuring User account\n\nThis is your everyday user. Depending on which module you are installing, you might or might not have to log in every time you boot your computer. Also, don't use a 30-letter password for this user. Be lazy, and keep both username and password relatively short.\n\nStep 8: Configuring Bootloader\n\nTo start Morphix from a harddisk, your system needs to find it first. The easiest way is to install the GRUB bootloader to your MBR (Master Boot Record). If you have multiple disks, install it to your first disk. If you have multiple operating systems, these might or might not succesfully be detected and added to a boot menu. Currently working on making this work a lot better, but we're not there yet. If you want to be safe, try option 2 or 3 to install LILO to the partition or not at all. You will have to check on the other bootloader in order to boot Morphix at all though. If you don't care or don't have any other operating systems on your machine, use the default.\n\nThe bootfloppy hasn't been implemented. Sorry, working on it!"), -1); dialog_action_area9 = GTK_DIALOG (HelpDialog)->action_area; --- 1993,1997 ---- gtk_text_view_set_left_margin (GTK_TEXT_VIEW (textview3), 5); gtk_text_view_set_right_margin (GTK_TEXT_VIEW (textview3), 5); ! gtk_text_buffer_set_text (gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview3)), _("Welcome to the Morphix Installer Help!\nEach step has a short summery here, that might help you out on making a choice. If you really aren't sure, drop by on our website and ask away! If people can't find their way around here we'd like to hear it, as this installer was made for even the most newest users to be able to install a working Morphix/Debian system...\n\nStep 1: Harddisk selection\n\nHere you must select the harddisk on which you want Morphix to be installed. Try to identify your harddisk on the size if you have multiple disks. If you only have one, well, then you won't have a lot to choose...\n\nWhen you click 'Forward', partition tool you selected will be started. Try to make a Linux and a Linux swap partition. Note that the former must be at least 2 GiB, the latter should be about 256MB.\n\nStep 2: Swap selection\n\nIf you have created a swap partition in Step 1, you can select it here. You can also do without swap, and things will probably work normal, but we advise making a swap partition anyway.\n\nStep 3: Root partition selection\n\nSelect the partition where you want to install Morphix on. After Step 1 you should have made a Linux partition, if you did you can select it here. If you didn't, go back to Step 1 and try again. You really need one!\n\nSelect the appropriate filesystem. If you don't care about this, take the default, \"ext3\".\n\n- ext2: the 'safe and sure' filesystem, tried and tested for years in the Linux community. However, you need to neatly unmount this filesystem, and it needs periodic checking. \n\n- ext3: ext2 but with journaling. This keeps track of every change that takes place, so if you accidently pull the plug (or Matty does), you just plug it back in and it will quickly sort out any errors on your disk. It's our default.\n\n- reiserfs: better in some ways, worse in others. Does have less tools and isn't compatible with ext2 or ext3.\n\n- xfs: the journaling filesystem from SGI. High-quality, high-speed. If you are reading this, you most likely don't want to use it. \n\nNow, sit back. Watch the dancing penguin as the files are copied. Or surf the web, play a game, it doesn't matter. That's the fun about installing Morphix: you can do other stuff while it's busy.\n\nStep 5: Configuring Hostname\n\nThere isn't much to say about this. Give your PC a name. Any name. We don't care. Honest. \n\nStep 6: Configuring Root account\n\nThe Root account is the system administrator. He can do anything. You generally shouldn't use this account, unless you really have to. You can break stuff as root, really. Think up a password thats pretty long, write it down and put it somewhere far away. If you forget it, we won't help you. Not much, anyway.\n\nStep 7: Configuring User account\n\nThis is your everyday user. Depending on which module you are installing, you might or might not have to log in every time you boot your computer. Also, don't use a 30-letter password for this user. Be lazy, and keep both username and password relatively short.\n\nStep 8: Configuring Bootloader\n\nTo start Morphix from a harddisk, your system needs to find it first. The easiest way is to install the GRUB bootloader to your MBR (Master Boot Record). If you have multiple disks, install it to your first disk. If you have multiple operating systems, these might or might not succesfully be detected and added to a boot menu. Currently working on making this work a lot better, but we're not there yet. If you want to be safe, try option 2 or 3 to install LILO to the partition or not at all. You will have to check on the other bootloader in order to boot Morphix at all though. If you don't care or don't have any other operating systems on your machine, use the default.\n\nThe bootfloppy hasn't been implemented. Sorry, working on it!"), -1); dialog_action_area9 = GTK_DIALOG (HelpDialog)->action_area; *************** *** 2083,2086 **** --- 2072,2076 ---- SelectPartExpert = gtk_dialog_new (); gtk_window_set_title (GTK_WINDOW (SelectPartExpert), _("Expert: Add additional partitions")); + gtk_window_set_type_hint (GTK_WINDOW (SelectPartExpert), GDK_WINDOW_TYPE_HINT_DIALOG); dialog_vbox10 = GTK_DIALOG (SelectPartExpert)->vbox; *************** *** 2356,2359 **** --- 2346,2350 ---- gtk_window_set_title (GTK_WINDOW (DataRoot), _("Morphix Install")); gtk_window_set_position (GTK_WINDOW (DataRoot), GTK_WIN_POS_CENTER); + gtk_window_set_type_hint (GTK_WINDOW (DataRoot), GDK_WINDOW_TYPE_HINT_DIALOG); vbox49 = GTK_DIALOG (DataRoot)->vbox; |