Add xcam spinner.

merge-requests/25/merge^2
Ordissimo 2025-06-05 23:48:32 +02:00
rodzic fb21102577
commit a9b7b510bf
4 zmienionych plików z 221 dodań i 162 usunięć

Wyświetl plik

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sconfig\n"
"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
"POT-Creation-Date: 2025-06-05 20:15+0200\n"
"POT-Creation-Date: 2025-06-05 23:28+0200\n"
"Language: en\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@ -206,11 +206,11 @@ msgstr ""
msgid "Restore device settings"
msgstr ""
#: src/xscanimage.c:1897 src/xcam.c:1717
#: src/xscanimage.c:1897 src/xcam.c:1797
msgid "File"
msgstr ""
#: src/xscanimage.c:1904 src/xcam.c:1731
#: src/xscanimage.c:1904 src/xcam.c:1811
msgid "Preferences"
msgstr ""
@ -242,11 +242,11 @@ msgstr ""
msgid "Select device"
msgstr ""
#: src/xscanimage.c:2206
#: src/xscanimage.c:2206 src/xcam.c:903
msgid "Searching for scanners..."
msgstr ""
#: src/xscanimage.c:2211
#: src/xscanimage.c:2211 src/xcam.c:908
msgid "Search for devices in progress..."
msgstr ""
@ -267,61 +267,61 @@ msgstr ""
msgid "%s: GIMP support missing.\n"
msgstr ""
#: src/xcam.c:1253
#: src/xcam.c:1350
#, c-format
msgid "Failed to start webcam: %s."
msgstr ""
#: src/xcam.c:1263
#: src/xcam.c:1360
#, c-format
msgid "Failed to get parameters: %s."
msgstr ""
#: src/xcam.c:1331
#: src/xcam.c:1428
msgid " Play "
msgstr ""
#: src/xcam.c:1337
#: src/xcam.c:1434
msgid " Stop "
msgstr ""
#: src/xcam.c:1361
#: src/xcam.c:1458
msgid "Saving started"
msgstr ""
#: src/xcam.c:1378
#: src/xcam.c:1475
#, c-format
msgid "Failed to scan, wrong file extension, use pnm, pgm, pbm or ppm `%s'"
msgstr ""
#: src/xcam.c:1386
#: src/xcam.c:1483
#, c-format
msgid "Failed to open `%s': %s"
msgstr ""
#: src/xcam.c:1396
#: src/xcam.c:1493
msgid ""
"Save\n"
"Frame"
msgstr ""
#: src/xcam.c:1412
#: src/xcam.c:1509
msgid ""
" TXT \n"
" OFF "
msgstr ""
#: src/xcam.c:1417
#: src/xcam.c:1514
msgid ""
" TXT \n"
" ON "
msgstr ""
#: src/xcam.c:1596
#: src/xcam.c:1676
msgid "Output Filename"
msgstr ""
#: src/xcam.c:1619
#: src/xcam.c:1699
#, c-format
msgid ""
"Usage: %s [OPTION]... [DEVICE]\n"
@ -334,11 +334,11 @@ msgid ""
"-V, --version print version information\n"
msgstr ""
#: src/xcam.c:1724
#: src/xcam.c:1804
msgid "Devices"
msgstr ""
#: src/xcam.c:1767
#: src/xcam.c:1847
msgid "Image view"
msgstr ""

Wyświetl plik

@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: SANE frontends\n"
"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
"POT-Creation-Date: 2025-06-05 20:15+0200\n"
"POT-Creation-Date: 2025-06-05 23:28+0200\n"
"PO-Revision-Date: \n"
"Last-Translator: Ralph Little <skelband@gmail.com>\n"
"Language-Team: \n"
@ -214,11 +214,11 @@ msgstr "Save device settings"
msgid "Restore device settings"
msgstr "Restore device settings"
#: src/xscanimage.c:1897 src/xcam.c:1717
#: src/xscanimage.c:1897 src/xcam.c:1797
msgid "File"
msgstr "File"
#: src/xscanimage.c:1904 src/xcam.c:1731
#: src/xscanimage.c:1904 src/xcam.c:1811
msgid "Preferences"
msgstr "Preferences"
@ -250,11 +250,11 @@ msgstr "Preview Window"
msgid "Select device"
msgstr "Select device"
#: src/xscanimage.c:2206
#: src/xscanimage.c:2206 src/xcam.c:903
msgid "Searching for scanners..."
msgstr "Searching for scanners..."
#: src/xscanimage.c:2211
#: src/xscanimage.c:2211 src/xcam.c:908
msgid "Search for devices in progress..."
msgstr "Search for devices in progress..."
@ -282,39 +282,39 @@ msgstr ""
msgid "%s: GIMP support missing.\n"
msgstr "%s: GIMP support missing.\n"
#: src/xcam.c:1253
#: src/xcam.c:1350
#, c-format
msgid "Failed to start webcam: %s."
msgstr "Failed to start webcam: %s."
#: src/xcam.c:1263
#: src/xcam.c:1360
#, c-format
msgid "Failed to get parameters: %s."
msgstr "Failed to get parameters: %s."
#: src/xcam.c:1331
#: src/xcam.c:1428
msgid " Play "
msgstr " Play "
#: src/xcam.c:1337
#: src/xcam.c:1434
msgid " Stop "
msgstr " Stop "
#: src/xcam.c:1361
#: src/xcam.c:1458
msgid "Saving started"
msgstr "Saving started"
#: src/xcam.c:1378
#: src/xcam.c:1475
#, c-format
msgid "Failed to scan, wrong file extension, use pnm, pgm, pbm or ppm `%s'"
msgstr "Failed to scan, wrong file extension, use pnm, pgm, pbm or ppm `%s'"
#: src/xcam.c:1386
#: src/xcam.c:1483
#, c-format
msgid "Failed to open `%s': %s"
msgstr "Failed to open `%s': %s"
#: src/xcam.c:1396
#: src/xcam.c:1493
msgid ""
"Save\n"
"Frame"
@ -322,7 +322,7 @@ msgstr ""
"Save\n"
"Frame"
#: src/xcam.c:1412
#: src/xcam.c:1509
msgid ""
" TXT \n"
" OFF "
@ -330,7 +330,7 @@ msgstr ""
" TXT \n"
" OFF "
#: src/xcam.c:1417
#: src/xcam.c:1514
msgid ""
" TXT \n"
" ON "
@ -338,11 +338,11 @@ msgstr ""
" TXT \n"
" ON "
#: src/xcam.c:1596
#: src/xcam.c:1676
msgid "Output Filename"
msgstr "Output Filename"
#: src/xcam.c:1619
#: src/xcam.c:1699
#, c-format
msgid ""
"Usage: %s [OPTION]... [DEVICE]\n"
@ -363,13 +363,13 @@ msgstr ""
"-B, --buffersize set buffersize 1024 * 1024\n"
"-V, --version print version information\n"
#: src/xcam.c:1724
#: src/xcam.c:1804
#, fuzzy
#| msgid "Device"
msgid "Devices"
msgstr "Device"
#: src/xcam.c:1767
#: src/xcam.c:1847
msgid "Image view"
msgstr "Image view"

Wyświetl plik

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: sconfig-plugin-bluez\n"
"Report-Msgid-Bugs-To: sane-devel@alioth-lists.debian.net\n"
"POT-Creation-Date: 2025-06-05 20:15+0200\n"
"POT-Creation-Date: 2025-06-05 23:28+0200\n"
"PO-Revision-Date: 2021-07-20 13:35+0200\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@ -216,11 +216,11 @@ msgstr "Enregistrer les paramètres du périphérique"
msgid "Restore device settings"
msgstr "Restaurer les paramètres du périphérique"
#: src/xscanimage.c:1897 src/xcam.c:1717
#: src/xscanimage.c:1897 src/xcam.c:1797
msgid "File"
msgstr "Fichier"
#: src/xscanimage.c:1904 src/xcam.c:1731
#: src/xscanimage.c:1904 src/xcam.c:1811
msgid "Preferences"
msgstr "Préférences"
@ -252,11 +252,11 @@ msgstr "Fenêtre d'aperçu"
msgid "Select device"
msgstr "Sélectionner un périphérique"
#: src/xscanimage.c:2206
#: src/xscanimage.c:2206 src/xcam.c:903
msgid "Searching for scanners..."
msgstr "Recherche de scanners..."
#: src/xscanimage.c:2211
#: src/xscanimage.c:2211 src/xcam.c:908
msgid "Search for devices in progress..."
msgstr "Recherche des périphériques en cours..."
@ -284,61 +284,61 @@ msgstr ""
msgid "%s: GIMP support missing.\n"
msgstr "%s: Support GIMP manquant.\n"
#: src/xcam.c:1253
#: src/xcam.c:1350
#, c-format
msgid "Failed to start webcam: %s."
msgstr "Échec du démarrage de la webcam : %s."
#: src/xcam.c:1263
#: src/xcam.c:1360
#, c-format
msgid "Failed to get parameters: %s."
msgstr "Échec de l'obtention des paramètres : %s."
#: src/xcam.c:1331
#: src/xcam.c:1428
msgid " Play "
msgstr ""
#: src/xcam.c:1337
#: src/xcam.c:1434
msgid " Stop "
msgstr ""
#: src/xcam.c:1361
#: src/xcam.c:1458
msgid "Saving started"
msgstr ""
#: src/xcam.c:1378
#: src/xcam.c:1475
#, c-format
msgid "Failed to scan, wrong file extension, use pnm, pgm, pbm or ppm `%s'"
msgstr ""
#: src/xcam.c:1386
#: src/xcam.c:1483
#, c-format
msgid "Failed to open `%s': %s"
msgstr "Échec de l'ouverture de %s : %s."
#: src/xcam.c:1396
#: src/xcam.c:1493
msgid ""
"Save\n"
"Frame"
msgstr ""
#: src/xcam.c:1412
#: src/xcam.c:1509
msgid ""
" TXT \n"
" OFF "
msgstr ""
#: src/xcam.c:1417
#: src/xcam.c:1514
msgid ""
" TXT \n"
" ON "
msgstr ""
#: src/xcam.c:1596
#: src/xcam.c:1676
msgid "Output Filename"
msgstr "Nom du fichier de sorti"
#: src/xcam.c:1619
#: src/xcam.c:1699
#, c-format
msgid ""
"Usage: %s [OPTION]... [DEVICE]\n"
@ -358,64 +358,64 @@ msgstr ""
"-h, --help afficher ce message d'aide et quitter\n"
"-V, --version afficher les informations de version\n"
#: src/xcam.c:1724
#: src/xcam.c:1804
msgid "Devices"
msgstr ""
msgstr "Appareils"
#: src/xcam.c:1767
#: src/xcam.c:1847
msgid "Image view"
msgstr "aperçu image"
#: src/scanadf.c:165
#, c-format
msgid "%s: stopping scanner...\n"
msgstr ""
msgstr "%s: arrêt du scanner...\n"
#: src/scanadf.c:328
msgid "Width of scan-area."
msgstr ""
msgstr "Largeur de la zone de balayage."
#: src/scanadf.c:332
msgid "Height of scan-area."
msgstr ""
msgstr "Hauteur de la zone de balayage."
#: src/scanadf.c:393
#, c-format
msgid "%s: option --%s: bad option value (rest of option: %s)\n"
msgstr ""
msgstr "%s: option --%s : mauvaise valeur de l'option (reste de l'option : %s)\n"
#: src/scanadf.c:432
#, c-format
msgid "%s: option --%s: illegal unit (rest of option: %s)\n"
msgstr ""
msgstr "%s : option --%s : unité illégale (reste de l'option : %s)\n"
#: src/scanadf.c:494
#, c-format
msgid "%s: option --%s: closing bracket missing (rest of option: %s)\n"
msgstr ""
msgstr "%s : option --%s : parenthèse fermante manquante (reste de l'option : %s)\n"
#: src/scanadf.c:505
#, c-format
msgid "%s: option --%s: index %d out of range [0..%ld]\n"
msgstr ""
msgstr "%s : option --%s : index %d hors de la plage [0..%ld]\n"
#: src/scanadf.c:518
#, c-format
msgid "%s: option --%s: illegal separator (rest of option: %s)\n"
msgstr ""
msgstr "%s : option --%s : séparateur illégal (reste de l'option : %s)\n"
#: src/scanadf.c:550
#, c-format
msgid "%s: value for --%s is: "
msgstr ""
msgstr "%s: la valeur pour --%s est: "
#: src/scanadf.c:573
#, c-format
msgid "Could not get option descriptor for option 0\n"
msgstr ""
msgstr "Impossible d'obtenir le descripteur d'option pour l'option 0\n"
#: src/scanadf.c:580
#, fuzzy, c-format
#, c-format
#| msgid "Failed to set value of option %s: %s."
msgid "Could not get value for option 0: %s\n"
msgstr "Échec de la restauration de la valeur de l'option %s : %s."
@ -423,48 +423,48 @@ msgstr "Échec de la restauration de la valeur de l'option %s : %s."
#: src/scanadf.c:590
#, c-format
msgid "Could not get option descriptor for option %d\n"
msgstr ""
msgstr "Impossible d'obtenir le descripteur d'option pour l'option %d\n"
#: src/scanadf.c:647
msgid "Scan width"
msgstr ""
msgstr "Largeur de balayage"
#: src/scanadf.c:648
msgid "Width of scanning area."
msgstr ""
msgstr "Largeur de la zone de numérisation."
#: src/scanadf.c:659
msgid "Scan height"
msgstr ""
msgstr "Hauteur de balayage"
#: src/scanadf.c:660
msgid "Height of scanning area."
msgstr ""
msgstr "Hauteur de la zone de numérisation."
#: src/scanadf.c:693
#, c-format
msgid "Closing device\n"
msgstr ""
msgstr "Dispositif de fermeture\n"
#: src/scanadf.c:699
#, c-format
msgid "Calling sane_exit\n"
msgstr ""
msgstr "Appel à sane_exit\n"
#: src/scanadf.c:707
#, c-format
msgid "%s: finished\n"
msgstr ""
msgstr "%s: terminé"
#: src/scanadf.c:728
#, c-format
msgid "%s: setting of option --%s failed (%s)\n"
msgstr ""
msgstr "%s : la définition de l'option --%s a échoué (%s)\n"
#: src/scanadf.c:736
#, c-format
msgid "%s: rounded value of %s from %d to %d\n"
msgstr ""
msgstr "%s : valeur arrondie de %s de %d à %d\n"
#: src/scanadf.c:739
#, c-format
@ -515,7 +515,7 @@ msgstr ""
#, fuzzy, c-format
#| msgid "Error during read: %s."
msgid "Error forking: %s (%d)\n"
msgstr "Erreur lors de la lecture : %s."
msgstr "Erreur de fork : %s (%d)\n"
#: src/scanadf.c:1011
#, c-format
@ -555,7 +555,7 @@ msgid "%s: bad %s frame: must be last_frame\n"
msgstr ""
#: src/scanadf.c:1172
#, fuzzy, c-format
#, c-format
#| msgid "%s.input_available: bad frame format %d\n"
msgid "%s: unknown frame format %d\n"
msgstr "%s.input_available : format de trame incorrect %d\n"
@ -616,7 +616,7 @@ msgid "%s: no SANE devices found\n"
msgstr ""
#: src/scanadf.c:1521
#, fuzzy, c-format
#, c-format
#| msgid "%s: device %d is unavailable.\n"
msgid "%s: open of device %s failed: %s\n"
msgstr "%s : le périphérique %d est indisponible.\n"
@ -624,19 +624,19 @@ msgstr "%s : le périphérique %d est indisponible.\n"
#: src/scanadf.c:1536
#, c-format
msgid "%s: unable to determine option count\n"
msgstr ""
msgstr "%s: Impossible de déterminer le nombre d'options\n"
#: src/scanadf.c:1547
#, c-format
msgid "%s: out of memory in fetch_options()\n"
msgstr ""
msgstr "%s: manque de mémoire dans fetch_options()\n"
#: src/scanadf.c:1646
#, c-format
msgid ""
"\n"
"Options specific to device `%s':\n"
msgstr ""
msgstr "\nOptions spécifiques au dispositif `%s':\n"
#: src/scanadf.c:1679
#, c-format
@ -645,6 +645,9 @@ msgid ""
"\n"
"List of available devices:"
msgstr ""
"Tapez ``%s --help -d DEVICE'' pour obtenir la liste de toutes les options pour DEVICE.\n"
"\n"
"Liste des appareils disponibles :"
#, c-format
#~ msgid "%s: device %d is unavailable.\n"

Wyświetl plik

@ -70,6 +70,12 @@
# define atexit(func) on_exit(func, 0) /* works for SunOS, at least */
#endif
typedef struct {
GtkWidget *dialog;
GtkWidget *spinner;
GtkWidget *menu;
} ScanUI;
typedef struct Canvas
{
GtkWidget *preview;
@ -789,47 +795,138 @@ device_activate_callback (GtkWidget * widget, gpointer data)
g_idle_add (delayed_switch, data);
}
static void
xcam_exit (void)
{
static int active = 0;
DBG (DBG_debug, "xcam: xcam_exit: enter\n");
if (active)
return;
active = 1;
pref_xcam_save ();
sane_exit ();
/* this has the habit of calling exit itself: */
gtk_main_quit ();
DBG (DBG_debug, "xcam: xcam_exit: exit\n");
}
static gboolean on_scan_finished(gpointer data) {
ScanUI *ui = (ScanUI *)data;
GtkWidget *menu, *item;
SANE_Status status;
int i;
for (i = 0; device[i]; ++i)
{
item = gtk_menu_item_new_with_label ((char *) device[i]->name);
gtk_container_add (GTK_CONTAINER (ui->menu), item);
g_signal_connect (G_OBJECT (item), "activate",
G_CALLBACK (device_activate_callback),
(gpointer) device[i]);
gtk_widget_show (item);
}
item = gtk_menu_item_new ();
gtk_container_add (GTK_CONTAINER (ui->menu), item);
gtk_widget_show (item);
item = gtk_menu_item_new_with_label ("Refresh device list...");
g_signal_connect (G_OBJECT (item), "activate",
G_CALLBACK (rescan_devices), 0);
gtk_container_add (GTK_CONTAINER (ui->menu), item);
gtk_widget_show (item);
item = gtk_menu_item_new_with_label ("Specify device name...");
g_signal_connect (G_OBJECT (item), "activate",
G_CALLBACK (prompt_for_device_name), 0);
gtk_container_add (GTK_CONTAINER (ui->menu), item);
gtk_widget_show (item);
if (device[0])
{
switch_device (device[0]);
load_defaults (1);
}
else
{
DBG (DBG_fatal,
" No vidcams were identified. If you were expecting something\n"
" different, check that the vidcam is plugged in, turned on and\n"
" detected by sane-find-scanner (if appropriate). Please read\n"
" the documentation which came with this software (README, FAQ,\n"
" manpages).\n");
atexit (xcam_exit);
}
if (dialog && gsg_dialog_get_device (dialog)
&& (sane_get_parameters (gsg_dialog_get_device (dialog), &win.params)
== SANE_STATUS_GOOD))
{
gtk_widget_set_size_request (win.canvas.preview,
win.params.pixels_per_line, win.params.lines);
}
gtk_spinner_stop(GTK_SPINNER(ui->spinner));
gtk_widget_destroy(ui->dialog);
g_free(ui);
return G_SOURCE_REMOVE;
}
static gpointer scan_thread_func(gpointer data) {
SANE_Status status;
ScanUI *ui = (ScanUI *)data;
status = sane_get_devices((const SANE_Device ***)&device, SANE_FALSE);
// Appeler ici la suite du traitement si besoin
if (status != SANE_STATUS_GOOD)
{
DBG (DBG_fatal, "init: sane_get_devices failed: %s\n",
sane_strstatus (status));
exit (1);
}
// Retourner à lUI
g_idle_add(on_scan_finished, ui);
return NULL;
}
void show_scan_progress_and_start(GtkWidget *menu) {
ScanUI *ui = g_new0(ScanUI, 1);
ui->menu = menu;
ui->dialog = gtk_dialog_new();
gtk_window_set_title(GTK_WINDOW(ui->dialog), _("Searching for scanners..."));
gtk_window_set_modal(GTK_WINDOW(ui->dialog), TRUE);
GtkWidget *content_area = gtk_dialog_get_content_area(GTK_DIALOG(ui->dialog));
GtkWidget *label = gtk_label_new(_("Search for devices in progress..."));
gtk_box_pack_start(GTK_BOX(content_area), label, FALSE, FALSE, 5);
ui->spinner = gtk_spinner_new();
gtk_box_pack_start(GTK_BOX(content_area), ui->spinner, FALSE, FALSE, 5);
gtk_widget_show_all(ui->dialog);
gtk_spinner_start(GTK_SPINNER(ui->spinner));
gtk_spinner_start(GTK_SPINNER(ui->spinner));
g_thread_new("scan_thread", scan_thread_func, ui);
}
static GtkWidget *
build_device_menu (void)
{
GtkWidget *menu, *item;
SANE_Status status;
int i;
GtkWidget *menu;
menu = gtk_menu_new ();
status = sane_get_devices (&device, SANE_FALSE);
if (status != SANE_STATUS_GOOD)
{
fprintf (stderr, "%s: %s\n", prog_name, sane_strstatus (status));
exit (1);
}
for (i = 0; device[i]; ++i)
{
item = gtk_menu_item_new_with_label ((char *) device[i]->name);
gtk_container_add (GTK_CONTAINER (menu), item);
g_signal_connect (G_OBJECT (item), "activate",
G_CALLBACK (device_activate_callback),
(gpointer) device[i]);
gtk_widget_show (item);
}
item = gtk_menu_item_new ();
gtk_container_add (GTK_CONTAINER (menu), item);
gtk_widget_show (item);
item = gtk_menu_item_new_with_label ("Refresh device list...");
g_signal_connect (G_OBJECT (item), "activate",
G_CALLBACK (rescan_devices), 0);
gtk_container_add (GTK_CONTAINER (menu), item);
gtk_widget_show (item);
item = gtk_menu_item_new_with_label ("Specify device name...");
g_signal_connect (G_OBJECT (item), "activate",
G_CALLBACK (prompt_for_device_name), 0);
gtk_container_add (GTK_CONTAINER (menu), item);
gtk_widget_show (item);
show_scan_progress_and_start (menu);
return menu;
}
@ -1554,23 +1651,6 @@ save_frame (void)
DBG (DBG_debug, "xcam: save_frame: exit\n");
}
static void
xcam_exit (void)
{
static int active = 0;
DBG (DBG_debug, "xcam: xcam_exit: enter\n");
if (active)
return;
active = 1;
pref_xcam_save ();
sane_exit ();
/* this has the habit of calling exit itself: */
gtk_main_quit ();
DBG (DBG_debug, "xcam: xcam_exit: exit\n");
}
/* Invoked when window manager's "delete" (or "close") function is
invoked. */
static gint
@ -1793,30 +1873,6 @@ main (int argc, char **argv)
gtk_widget_show (GTK_WIDGET (scrolled_window));
if (device[0])
{
switch_device (device[0]);
load_defaults (1);
}
else
{
DBG (DBG_fatal,
" No vidcams were identified. If you were expecting something\n"
" different, check that the vidcam is plugged in, turned on and\n"
" detected by sane-find-scanner (if appropriate). Please read\n"
" the documentation which came with this software (README, FAQ,\n"
" manpages).\n");
atexit (xcam_exit);
}
if (dialog && gsg_dialog_get_device (dialog)
&& (sane_get_parameters (gsg_dialog_get_device (dialog), &win.params)
== SANE_STATUS_GOOD))
{
gtk_widget_set_size_request (win.canvas.preview,
win.params.pixels_per_line, win.params.lines);
}
/* The bottom row */
DBG (DBG_debug, "xcam main, button row: info\n");