mirror of
https://github.com/eddyem/CCD_Capture.git
synced 2025-12-06 02:35:13 +03:00
rebuild code to run image viewer in standalone or client mode (not implemented yet)
This commit is contained in:
parent
089370d276
commit
764aa50ccc
203
ccdfunc.c
203
ccdfunc.c
@ -19,6 +19,7 @@
|
|||||||
#include <dlfcn.h> // dlopen/close
|
#include <dlfcn.h> // dlopen/close
|
||||||
#include <fitsio.h>
|
#include <fitsio.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
#include <signal.h> // pthread_kill
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
@ -424,11 +425,10 @@ int startFocuser(void **dlh){
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void focclose(void *dlh){
|
void focclose(){
|
||||||
if(!dlh || !focuser) return;
|
if(!focuser) return;
|
||||||
focuser->close();
|
focuser->close();
|
||||||
focuser = NULL;
|
focuser = NULL;
|
||||||
//dlclose(dlh);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -497,7 +497,7 @@ void focusers(){
|
|||||||
if(!focuser->setAbsPos(GP->async, tagpos)) WARNX(_("Can't set position %g"), tagpos);
|
if(!focuser->setAbsPos(GP->async, tagpos)) WARNX(_("Can't set position %g"), tagpos);
|
||||||
}
|
}
|
||||||
retn:
|
retn:
|
||||||
focclose(dlh);
|
focclose();
|
||||||
}
|
}
|
||||||
|
|
||||||
int startWheel(void **dlh){
|
int startWheel(void **dlh){
|
||||||
@ -516,11 +516,10 @@ int startWheel(void **dlh){
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void closewheel(void *dlh){
|
void closewheel(){
|
||||||
if(!dlh || !wheel) return;
|
if(!wheel) return;
|
||||||
wheel->close();
|
wheel->close();
|
||||||
wheel = NULL;
|
wheel = NULL;
|
||||||
//dlclose(dlh);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -574,7 +573,7 @@ void wheels(){
|
|||||||
if(!wheel->setPos(pos))
|
if(!wheel->setPos(pos))
|
||||||
WARNX(_("Can't set wheel position %d"), pos);
|
WARNX(_("Can't set wheel position %d"), pos);
|
||||||
retn:
|
retn:
|
||||||
closewheel(dlh);
|
closewheel();
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
static void closeall(){
|
static void closeall(){
|
||||||
@ -617,24 +616,19 @@ int startCCD(void **dlh){
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void closecam(void *dlh){
|
void closecam(){
|
||||||
if(!dlh || !camera) return;
|
if(!camera) return;
|
||||||
DBG("Close cam");
|
DBG("Close cam");
|
||||||
camera->close();
|
camera->close();
|
||||||
camera = NULL;
|
camera = NULL;
|
||||||
DBG("close dlh");
|
|
||||||
//dlclose(dlh);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
// make base settings; return TRUE if all OK
|
||||||
* Find CCDs and work with each of them
|
int prepare_ccds(){
|
||||||
*/
|
|
||||||
void ccds(){
|
|
||||||
FNAME();
|
FNAME();
|
||||||
float tmpf;
|
int rtn = FALSE;
|
||||||
int tmpi;
|
|
||||||
void *dlh = NULL;
|
void *dlh = NULL;
|
||||||
if(!startCCD(&dlh)) return;
|
if(!startCCD(&dlh)) return FALSE;
|
||||||
if(GP->listdevices){
|
if(GP->listdevices){
|
||||||
for(int i = 0; i < camera->Ndevices; ++i){
|
for(int i = 0; i < camera->Ndevices; ++i){
|
||||||
if(!camera->setDevNo(i)) continue;
|
if(!camera->setDevNo(i)) continue;
|
||||||
@ -681,6 +675,7 @@ void ccds(){
|
|||||||
WARNX(_("Can't set T to %g degC"), GP->temperature);
|
WARNX(_("Can't set T to %g degC"), GP->temperature);
|
||||||
verbose(3, "SetT=%.1f", GP->temperature);
|
verbose(3, "SetT=%.1f", GP->temperature);
|
||||||
}
|
}
|
||||||
|
float tmpf;
|
||||||
if(camera->getTcold(&tmpf)) verbose(1, "CCDTEMP=%.1f", tmpf);
|
if(camera->getTcold(&tmpf)) verbose(1, "CCDTEMP=%.1f", tmpf);
|
||||||
if(camera->getTbody(&tmpf)) verbose(1, "BODYTEMP=%.1f", tmpf);
|
if(camera->getTbody(&tmpf)) verbose(1, "BODYTEMP=%.1f", tmpf);
|
||||||
if(GP->shtr_cmd > -1 && GP->shtr_cmd < SHUTTER_AMOUNT){
|
if(GP->shtr_cmd > -1 && GP->shtr_cmd < SHUTTER_AMOUNT){
|
||||||
@ -695,6 +690,7 @@ void ccds(){
|
|||||||
if(!camera->confio(GP->confio))
|
if(!camera->confio(GP->confio))
|
||||||
WARNX(_("Can't configure (unsupported?)"));
|
WARNX(_("Can't configure (unsupported?)"));
|
||||||
}
|
}
|
||||||
|
int tmpi;
|
||||||
if(GP->getio){
|
if(GP->getio){
|
||||||
if(camera->getio(&tmpi))
|
if(camera->getio(&tmpi))
|
||||||
verbose(0, "CCDIOPORT=0x%02X\n", tmpi);
|
verbose(0, "CCDIOPORT=0x%02X\n", tmpi);
|
||||||
@ -761,23 +757,23 @@ void ccds(){
|
|||||||
if(!camera->getbin(&GP->hbin, &GP->vbin)) // GET binning should be AFTER setgeometry!
|
if(!camera->getbin(&GP->hbin, &GP->vbin)) // GET binning should be AFTER setgeometry!
|
||||||
WARNX(_("Can't get current binning"));
|
WARNX(_("Can't get current binning"));
|
||||||
verbose(2, "Binning: %d x %d", GP->hbin, GP->vbin);
|
verbose(2, "Binning: %d x %d", GP->hbin, GP->vbin);
|
||||||
int raw_width = fmt.w / GP->hbin, raw_height = fmt.h / GP->vbin;
|
rtn = TRUE;
|
||||||
|
retn:
|
||||||
|
if(!rtn) closecam();
|
||||||
|
return rtn;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Main CCD process in standalone mode without viewer: get N images and save them
|
||||||
|
*/
|
||||||
|
void ccds(){
|
||||||
|
FNAME();
|
||||||
|
frameformat fmt = camera->geometry;
|
||||||
|
int raw_width = fmt.w / GP->hbin, raw_height = fmt.h / GP->vbin;
|
||||||
|
DBG("w=%d, h=%d", raw_width, raw_height);
|
||||||
uint16_t *img = MALLOC(uint16_t, raw_width * raw_height);
|
uint16_t *img = MALLOC(uint16_t, raw_width * raw_height);
|
||||||
DBG("\n\nAllocated image 2x%dx%d=%d", raw_width, raw_height, 2 * raw_width * raw_height);
|
DBG("\n\nAllocated image 2x%dx%d=%d", raw_width, raw_height, 2 * raw_width * raw_height);
|
||||||
IMG ima = {.data = img, .w = raw_width, .h = raw_height};
|
IMG ima = {.data = img, .w = raw_width, .h = raw_height};
|
||||||
#ifdef IMAGEVIEW
|
|
||||||
windowData *mainwin = NULL;
|
|
||||||
if(GP->showimage){
|
|
||||||
imageview_init();
|
|
||||||
DBG("Create new win");
|
|
||||||
mainwin = createGLwin("Sample window", raw_width, raw_height, NULL);
|
|
||||||
if(!mainwin){
|
|
||||||
WARNX(_("Can't open OpenGL window, image preview will be inaccessible"));
|
|
||||||
}else
|
|
||||||
pthread_create(&mainwin->thread, NULL, &image_thread, (void*)&ima);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if(GP->nframes < 1) GP->nframes = 1;
|
if(GP->nframes < 1) GP->nframes = 1;
|
||||||
for(int j = 0; j < GP->nframes; ++j){
|
for(int j = 0; j < GP->nframes; ++j){
|
||||||
// úÁÈ×ÁÔ ËÁÄÒÁ %d\n
|
// úÁÈ×ÁÔ ËÁÄÒÁ %d\n
|
||||||
@ -797,44 +793,13 @@ void ccds(){
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
calculate_stat(&ima);
|
calculate_stat(&ima);
|
||||||
#ifdef IMAGEVIEW
|
saveFITS(&ima, NULL);
|
||||||
if(!GP->showimage){ // don't save all FITS files in imagev view mode
|
|
||||||
#endif
|
|
||||||
saveFITS(&ima, NULL);
|
|
||||||
#ifdef IMAGEVIEW
|
|
||||||
}
|
|
||||||
if(GP->showimage){ // display image
|
|
||||||
if((mainwin = getWin())){
|
|
||||||
DBG("change image");
|
|
||||||
change_displayed_image(mainwin, &ima);
|
|
||||||
while((mainwin = getWin())){ // test paused state & grabbing custom frames
|
|
||||||
if((mainwin->winevt & WINEVT_PAUSE) == 0) break;
|
|
||||||
if(mainwin->winevt & WINEVT_GETIMAGE){
|
|
||||||
mainwin->winevt &= ~WINEVT_GETIMAGE;
|
|
||||||
//if(!camera) return;
|
|
||||||
if(capt() != CAPTURE_READY){
|
|
||||||
WARNX(_("Can't capture image"));
|
|
||||||
}else{
|
|
||||||
//if(!camera) return;
|
|
||||||
if(!camera->capture(&ima)){
|
|
||||||
WARNX(_("Can't grab image"));
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
calculate_stat(&ima);
|
|
||||||
change_displayed_image(mainwin, &ima);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
usleep(10000);
|
|
||||||
}
|
|
||||||
}else break; // stop capturing when window closed
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if(GP->pause_len && j != (GP->nframes - 1)){
|
if(GP->pause_len && j != (GP->nframes - 1)){
|
||||||
double delta, time1 = dtime() + GP->pause_len;
|
double delta, time1 = dtime() + GP->pause_len;
|
||||||
while((delta = time1 - dtime()) > 0.){
|
while((delta = time1 - dtime()) > 0.){
|
||||||
// %d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n
|
// %d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n
|
||||||
verbose(1, _("%d seconds till pause ends\n"), (int)delta);
|
verbose(1, _("%d seconds till pause ends\n"), (int)delta);
|
||||||
|
float tmpf;
|
||||||
if(camera->getTcold(&tmpf)) verbose(1, "CCDTEMP=%.1f\n", tmpf);
|
if(camera->getTcold(&tmpf)) verbose(1, "CCDTEMP=%.1f\n", tmpf);
|
||||||
if(camera->getTbody(&tmpf)) verbose(1, "BODYTEMP=%.1f\n", tmpf);
|
if(camera->getTbody(&tmpf)) verbose(1, "BODYTEMP=%.1f\n", tmpf);
|
||||||
if(delta > 6.) sleep(5);
|
if(delta > 6.) sleep(5);
|
||||||
@ -843,39 +808,9 @@ void ccds(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef IMAGEVIEW
|
|
||||||
if(GP->showimage){
|
|
||||||
if((mainwin = getWin())) mainwin->winevt |= WINEVT_PAUSE;
|
|
||||||
DBG("Waiting");
|
|
||||||
while((mainwin = getWin())){
|
|
||||||
//if(mainwin->killthread) break;
|
|
||||||
if(mainwin->winevt & WINEVT_GETIMAGE){
|
|
||||||
DBG("GRAB");
|
|
||||||
mainwin->winevt &= ~WINEVT_GETIMAGE;
|
|
||||||
//if(!camera) return;
|
|
||||||
if(capt() != CAPTURE_READY){
|
|
||||||
WARNX(_("Can't capture image"));
|
|
||||||
}else{
|
|
||||||
//if(!camera) return;
|
|
||||||
if(!camera->capture(&ima)){
|
|
||||||
WARNX(_("Can't grab image"));
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
calculate_stat(&ima);
|
|
||||||
change_displayed_image(mainwin, &ima);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
DBG("Close window");
|
|
||||||
usleep(10000);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
DBG("FREE img");
|
DBG("FREE img");
|
||||||
FREE(img);
|
FREE(img);
|
||||||
retn:
|
closecam();
|
||||||
closecam(dlh);
|
|
||||||
DBG("closed -> out");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void cancel(){
|
void cancel(){
|
||||||
@ -883,3 +818,79 @@ void cancel(){
|
|||||||
camera->cancel();
|
camera->cancel();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static volatile int grabends = 1;
|
||||||
|
static void *grabnext(void *arg){
|
||||||
|
FNAME();
|
||||||
|
grabends = 0;
|
||||||
|
static int retval = FALSE;
|
||||||
|
IMG *ima = (IMG*) arg;
|
||||||
|
DBG("nxt");
|
||||||
|
if(!ima || !camera) goto eof;
|
||||||
|
if(!camera->startexposition()){ WARNX(_("Can't start exposition")); goto eof; }
|
||||||
|
capture_status cs;
|
||||||
|
DBG("Poll");
|
||||||
|
while(!camera->pollcapture(&cs, NULL)){
|
||||||
|
usleep(10000);
|
||||||
|
if(!camera) goto eof;
|
||||||
|
}
|
||||||
|
DBG("get");
|
||||||
|
if(!camera->capture(ima)){ WARNX(_("Can't grab image")); goto eof; }
|
||||||
|
calculate_stat(ima);
|
||||||
|
retval = TRUE;
|
||||||
|
DBG("OK");
|
||||||
|
eof:
|
||||||
|
grabends = 1;
|
||||||
|
pthread_exit((void*)&retval);
|
||||||
|
DBG("EXIT");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief ccdcaptured - get new image data for viewer
|
||||||
|
* @param img - pointer to IMG* (if IMG* is NULL, will be allocated here)
|
||||||
|
* @return TRUE if new image available
|
||||||
|
*/
|
||||||
|
int ccdcaptured(IMG **imgptr){
|
||||||
|
if(!imgptr) return FALSE;
|
||||||
|
static pthread_t grabthread = 0;
|
||||||
|
if(imgptr == (void*)-1){ // kill `grabnext`
|
||||||
|
DBG("Kill grabbing thread");
|
||||||
|
if(grabthread){
|
||||||
|
pthread_cancel(grabthread);
|
||||||
|
pthread_join(grabthread, NULL);
|
||||||
|
grabthread = 0;
|
||||||
|
}
|
||||||
|
DBG("Killed");
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
frameformat fmt = camera->geometry;
|
||||||
|
int raw_width = fmt.w / GP->hbin, raw_height = fmt.h / GP->vbin;
|
||||||
|
IMG *ima = NULL;
|
||||||
|
if(!*imgptr){
|
||||||
|
uint16_t *img = MALLOC(uint16_t, raw_width * raw_height);
|
||||||
|
DBG("\n\nAllocated image 2x%dx%d=%d", raw_width, raw_height, 2 * raw_width * raw_height);
|
||||||
|
ima = MALLOC(IMG, 1);
|
||||||
|
ima->data = img;
|
||||||
|
ima->w = raw_width;
|
||||||
|
ima->h = raw_height;
|
||||||
|
*imgptr = ima;
|
||||||
|
}else ima = *imgptr;
|
||||||
|
if(!grabthread){ // start new grab
|
||||||
|
DBG("\n\n\nStart new grab");
|
||||||
|
if(pthread_create(&grabthread, NULL, &grabnext, (void*)ima)){
|
||||||
|
WARN("Can't create grabbing thread");
|
||||||
|
grabthread = 0;
|
||||||
|
}
|
||||||
|
}else{ // grab in process
|
||||||
|
if(grabends){ // thread is dead
|
||||||
|
DBG("Thread is dead");
|
||||||
|
void *vr;
|
||||||
|
pthread_join(grabthread, &vr);
|
||||||
|
int retcode = *(int*)vr;
|
||||||
|
DBG("retcode = %d", retcode);
|
||||||
|
grabthread = 0;
|
||||||
|
if(retcode) return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|||||||
@ -30,14 +30,16 @@ void calculate_stat(IMG *image);
|
|||||||
int saveFITS(IMG *img, char **outp); // for imageview module
|
int saveFITS(IMG *img, char **outp); // for imageview module
|
||||||
void focusers();
|
void focusers();
|
||||||
void wheels();
|
void wheels();
|
||||||
|
int prepare_ccds();
|
||||||
void ccds();
|
void ccds();
|
||||||
void cancel();
|
void cancel();
|
||||||
|
|
||||||
int startCCD(void **dlh);
|
int startCCD(void **dlh);
|
||||||
int startWheel(void **dlh);
|
int startWheel(void **dlh);
|
||||||
int startFocuser(void **dlh);
|
int startFocuser(void **dlh);
|
||||||
void focclose(void *dlh);
|
void focclose();
|
||||||
void closewheel(void *dlh);
|
void closewheel();
|
||||||
void closecam(void *dlh);
|
void closecam();
|
||||||
|
int ccdcaptured(IMG **img);
|
||||||
|
|
||||||
#endif // CCDFUNC_H__
|
#endif // CCDFUNC_H__
|
||||||
|
|||||||
@ -121,7 +121,7 @@ myoption cmdlnopts[] = {
|
|||||||
*/
|
*/
|
||||||
glob_pars *parse_args(int argc, char **argv){
|
glob_pars *parse_args(int argc, char **argv){
|
||||||
// format of help: "Usage: progname [args]\n"
|
// format of help: "Usage: progname [args]\n"
|
||||||
change_helpstring("Usage: %s [args] [output file prefix]\nTo restart server kill it with SIGUSR1\n\tArgs are:\n");
|
change_helpstring("Usage: %s [args] [output file prefix or file/dir name to view]\nTo restart server kill it with SIGUSR1\n\tArgs are:\n");
|
||||||
// parse arguments
|
// parse arguments
|
||||||
parseargs(&argc, &argv, cmdlnopts);
|
parseargs(&argc, &argv, cmdlnopts);
|
||||||
if(help) showhelp(-1, cmdlnopts);
|
if(help) showhelp(-1, cmdlnopts);
|
||||||
|
|||||||
6
events.c
6
events.c
@ -21,11 +21,12 @@
|
|||||||
#include "events.h"
|
#include "events.h"
|
||||||
#include "imageview.h"
|
#include "imageview.h"
|
||||||
|
|
||||||
|
extern windowData *win;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* manage pressed keys & menu items
|
* manage pressed keys & menu items
|
||||||
*/
|
*/
|
||||||
static void processKeybrd(unsigned char key, int mod, _U_ int x, _U_ int y){
|
static void processKeybrd(unsigned char key, int mod, _U_ int x, _U_ int y){
|
||||||
windowData *win = getWin();
|
|
||||||
if(!win) return;
|
if(!win) return;
|
||||||
DBG("key=%d (%c), mod=%d", key, key, mod);
|
DBG("key=%d (%c), mod=%d", key, key, mod);
|
||||||
if(mod == GLUT_ACTIVE_CTRL){ // 'a' == 1, 'b' == 2...
|
if(mod == GLUT_ACTIVE_CTRL){ // 'a' == 1, 'b' == 2...
|
||||||
@ -102,7 +103,6 @@ void mousePressed(int key, int state, int x, int y){
|
|||||||
// key: GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, GLUT_RIGHT_BUTTON
|
// key: GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, GLUT_RIGHT_BUTTON
|
||||||
// state: GLUT_UP, GLUT_DOWN
|
// state: GLUT_UP, GLUT_DOWN
|
||||||
int mod = glutGetModifiers() & 7;
|
int mod = glutGetModifiers() & 7;
|
||||||
windowData *win = getWin();
|
|
||||||
if(!win) return;
|
if(!win) return;
|
||||||
if(state == GLUT_DOWN){
|
if(state == GLUT_DOWN){
|
||||||
oldx = x; oldy = y;
|
oldx = x; oldy = y;
|
||||||
@ -130,7 +130,6 @@ void mousePressed(int key, int state, int x, int y){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void mouseMove(int x, int y){
|
void mouseMove(int x, int y){
|
||||||
windowData *win = getWin();
|
|
||||||
if(!win) return;
|
if(!win) return;
|
||||||
if(movingwin){
|
if(movingwin){
|
||||||
float X, Y, nx, ny, w2, h2;
|
float X, Y, nx, ny, w2, h2;
|
||||||
@ -183,7 +182,6 @@ static const menuentry entries[] = {
|
|||||||
|
|
||||||
void createMenu(){
|
void createMenu(){
|
||||||
FNAME();
|
FNAME();
|
||||||
windowData *win = getWin();
|
|
||||||
if(!win) return;
|
if(!win) return;
|
||||||
DBG("menu for win ID %d", win->ID);
|
DBG("menu for win ID %d", win->ID);
|
||||||
glutSetWindow(win->ID);
|
glutSetWindow(win->ID);
|
||||||
|
|||||||
174
imageview.c
174
imageview.c
@ -28,7 +28,7 @@
|
|||||||
#include "imageview.h"
|
#include "imageview.h"
|
||||||
#include "omp.h"
|
#include "omp.h"
|
||||||
|
|
||||||
static windowData *win = NULL; // main window
|
windowData *win = NULL; // main window (common variable for events.c)
|
||||||
static pthread_t GLUTthread = 0; // main GLUT thread
|
static pthread_t GLUTthread = 0; // main GLUT thread
|
||||||
static int imequalize = TRUE;
|
static int imequalize = TRUE;
|
||||||
static int initialized = 0; // ==1 if GLUT is initialized; ==0 after clear_GL_context
|
static int initialized = 0; // ==1 if GLUT is initialized; ==0 after clear_GL_context
|
||||||
@ -38,6 +38,24 @@ static void createWindow();
|
|||||||
static void RedrawWindow();
|
static void RedrawWindow();
|
||||||
static void Resize(int width, int height);
|
static void Resize(int width, int height);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init freeGLUT
|
||||||
|
*/
|
||||||
|
static void imageview_init(){
|
||||||
|
FNAME();
|
||||||
|
char *v[] = {"Image view window", NULL};
|
||||||
|
int c = 1;
|
||||||
|
if(initialized){
|
||||||
|
WARNX(_("Already initialized!"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
XInitThreads(); // we need it for threaded windows
|
||||||
|
glutInit(&c, v);
|
||||||
|
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
|
||||||
|
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION);
|
||||||
|
initialized = 1;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* calculate window properties on creating & resizing
|
* calculate window properties on creating & resizing
|
||||||
*/
|
*/
|
||||||
@ -109,7 +127,7 @@ static void createWindow(){
|
|||||||
DBG("Window opened");
|
DBG("Window opened");
|
||||||
}
|
}
|
||||||
|
|
||||||
int killwindow(){
|
static int killwindow(){
|
||||||
if(!win) return 0;
|
if(!win) return 0;
|
||||||
if(!win->killthread){
|
if(!win->killthread){
|
||||||
// say threads to die
|
// say threads to die
|
||||||
@ -140,7 +158,8 @@ int killwindow(){
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void renderBitmapString(float x, float y, void *font, char *string, GLubyte *color){
|
/*
|
||||||
|
static void renderBitmapString(float x, float y, void *font, char *string, GLubyte *color){
|
||||||
if(!initialized) return;
|
if(!initialized) return;
|
||||||
char *c;
|
char *c;
|
||||||
int x1=x, W=0;
|
int x1=x, W=0;
|
||||||
@ -159,7 +178,7 @@ void renderBitmapString(float x, float y, void *font, char *string, GLubyte *col
|
|||||||
//glutStrokeCharacter(GLUT_STROKE_ROMAN, *c);
|
//glutStrokeCharacter(GLUT_STROKE_ROMAN, *c);
|
||||||
x1 = x1 + glutBitmapWidth(font,*c);// + 1;
|
x1 = x1 + glutBitmapWidth(font,*c);// + 1;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
static void RedrawWindow(){
|
static void RedrawWindow(){
|
||||||
//DBG("ini=%d, win=%s", initialized, win ? "yes" : "no");
|
//DBG("ini=%d, win=%s", initialized, win ? "yes" : "no");
|
||||||
@ -213,6 +232,7 @@ static void *Redraw(_U_ void *arg){
|
|||||||
|
|
||||||
static void Resize(int width, int height){
|
static void Resize(int width, int height){
|
||||||
FNAME();
|
FNAME();
|
||||||
|
if(!initialized) return;
|
||||||
if(!initialized || !win || win->killthread) return;
|
if(!initialized || !win || win->killthread) return;
|
||||||
glutReshapeWindow(width, height);
|
glutReshapeWindow(width, height);
|
||||||
win->w = width;
|
win->w = width;
|
||||||
@ -236,7 +256,7 @@ static void Resize(int width, int height){
|
|||||||
* @param rawdata - NULL (then the memory will be allocated here with size w x h)
|
* @param rawdata - NULL (then the memory will be allocated here with size w x h)
|
||||||
* or allocated outside data
|
* or allocated outside data
|
||||||
*/
|
*/
|
||||||
windowData *createGLwin(char *title, int w, int h, rawimage *rawdata){
|
static void createGLwin(char *title, int w, int h, rawimage *rawdata){
|
||||||
FNAME();
|
FNAME();
|
||||||
if(!initialized) imageview_init();
|
if(!initialized) imageview_init();
|
||||||
if(win) killwindow();
|
if(win) killwindow();
|
||||||
@ -255,58 +275,22 @@ windowData *createGLwin(char *title, int w, int h, rawimage *rawdata){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(!raw || !raw->rawdata){
|
if(!raw || !raw->rawdata){
|
||||||
free(raw);
|
FREE(raw);
|
||||||
return NULL;
|
FREE(win);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
win->title = strdup(title);
|
win->title = strdup(title);
|
||||||
win->image = raw;
|
win->image = raw;
|
||||||
if(pthread_mutex_init(&win->mutex, NULL)){
|
if(pthread_mutex_init(&win->mutex, NULL)){
|
||||||
WARN(_("Can't init mutex!"));
|
WARN(_("Can't init mutex!"));
|
||||||
killwindow();
|
killwindow();
|
||||||
return NULL;
|
return;
|
||||||
}
|
}
|
||||||
win->w = w;
|
win->w = w;
|
||||||
win->h = h;
|
win->h = h;
|
||||||
pthread_create(&GLUTthread, NULL, &Redraw, NULL);
|
pthread_create(&GLUTthread, NULL, &Redraw, NULL);
|
||||||
return win;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Init freeGLUT
|
|
||||||
*/
|
|
||||||
void imageview_init(){
|
|
||||||
FNAME();
|
|
||||||
char *v[] = {"Image view window", NULL};
|
|
||||||
int c = 1;
|
|
||||||
if(initialized){
|
|
||||||
WARNX(_("Already initialized!"));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
XInitThreads(); // we need it for threaded windows
|
|
||||||
glutInit(&c, v);
|
|
||||||
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH);
|
|
||||||
glutSetOption(GLUT_ACTION_ON_WINDOW_CLOSE, GLUT_ACTION_CONTINUE_EXECUTION);
|
|
||||||
initialized = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Close all opened windows and terminate main GLUT thread
|
|
||||||
*/
|
|
||||||
void clear_GL_context(){
|
|
||||||
FNAME();
|
|
||||||
if(!initialized) return;
|
|
||||||
initialized = 0;
|
|
||||||
cancel(); // cancel expositions
|
|
||||||
DBG("kill");
|
|
||||||
killwindow();
|
|
||||||
DBG("join");
|
|
||||||
DBG("Leave mainloop");
|
|
||||||
glutLeaveMainLoop();
|
|
||||||
if(GLUTthread) pthread_join(GLUTthread, NULL); // wait while main thread exits
|
|
||||||
DBG("main GL thread cancelled");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Coordinates transformation from CS of drawingArea into CS of picture
|
* Coordinates transformation from CS of drawingArea into CS of picture
|
||||||
* x,y - pointer coordinates
|
* x,y - pointer coordinates
|
||||||
@ -328,11 +312,6 @@ void conv_image_to_mouse_coords(float X, float Y,
|
|||||||
*y = (int)roundf((window->y0 - Y) * a);
|
*y = (int)roundf((window->y0 - Y) * a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
windowData *getWin(){
|
|
||||||
return win;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert gray (unsigned short) into RGB components (GLubyte)
|
* Convert gray (unsigned short) into RGB components (GLubyte)
|
||||||
* @argument L - gray level (0..1)
|
* @argument L - gray level (0..1)
|
||||||
@ -451,12 +430,21 @@ static uint8_t *equalize(uint16_t *ori, int w, int h){
|
|||||||
return retn;
|
return retn;
|
||||||
}
|
}
|
||||||
|
|
||||||
void change_displayed_image(windowData *win, IMG *img){
|
static void change_displayed_image(IMG *img){
|
||||||
if(!win || !win->image) return;
|
if(!win || !win->image) return;
|
||||||
rawimage *im = win->image;
|
|
||||||
DBG("imh=%d, imw=%d, ch=%u, cw=%u", im->h, im->w, img->w, img->h);
|
|
||||||
pthread_mutex_lock(&win->mutex);
|
pthread_mutex_lock(&win->mutex);
|
||||||
|
rawimage *im = win->image;
|
||||||
|
DBG("imh=%d, imw=%d, ch=%u, cw=%u", im->h, im->w, img->h, img->w);
|
||||||
int w = img->w, h = img->h, s = w*h;
|
int w = img->w, h = img->h, s = w*h;
|
||||||
|
if(!im || (im->h != h) || (im->w != w)){ // realloc image to new size
|
||||||
|
DBG("\n\nRealloc rawdata");
|
||||||
|
if(im) FREE(im->rawdata);
|
||||||
|
else im = MALLOC(rawimage, 1);
|
||||||
|
im->rawdata = MALLOC(GLubyte, w*h*3);
|
||||||
|
im->h = h; im->w = w;
|
||||||
|
win->image = im;
|
||||||
|
DBG("win->image changed");
|
||||||
|
}
|
||||||
if(imequalize){
|
if(imequalize){
|
||||||
uint8_t *newima = equalize(img->data, w, h);
|
uint8_t *newima = equalize(img->data, w, h);
|
||||||
GLubyte *dst = im->rawdata;
|
GLubyte *dst = im->rawdata;
|
||||||
@ -490,11 +478,13 @@ void change_displayed_image(windowData *win, IMG *img){
|
|||||||
pthread_mutex_unlock(&win->mutex);
|
pthread_mutex_unlock(&win->mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
void* image_thread(_U_ void *data){
|
#if 0
|
||||||
|
// thread for checking
|
||||||
|
static void* image_thread(void *data){
|
||||||
FNAME();
|
FNAME();
|
||||||
IMG *img = (IMG*) data;
|
IMG *(*newimage)(const char *) = (IMG*(*)(const char*)) data;
|
||||||
|
IMG *img = NULL;
|
||||||
while(1){
|
while(1){
|
||||||
windowData *win = getWin();
|
|
||||||
if(!win || win->killthread){
|
if(!win || win->killthread){
|
||||||
DBG("got killthread");
|
DBG("got killthread");
|
||||||
clear_GL_context();
|
clear_GL_context();
|
||||||
@ -520,9 +510,77 @@ void* image_thread(_U_ void *data){
|
|||||||
usleep(10000);
|
usleep(10000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
void closeGL(){
|
void closeGL(){
|
||||||
windowData *win = getWin();
|
|
||||||
if(win) win->killthread = 1;
|
if(win) win->killthread = 1;
|
||||||
while(getWin()) usleep(1000);
|
usleep(1000);
|
||||||
|
if(!initialized) return;
|
||||||
|
initialized = 0;
|
||||||
|
cancel(); // cancel expositions
|
||||||
|
DBG("kill");
|
||||||
|
killwindow();
|
||||||
|
DBG("Leave mainloop");
|
||||||
|
glutLeaveMainLoop();
|
||||||
|
DBG("join");
|
||||||
|
if(GLUTthread) pthread_join(GLUTthread, NULL); // wait while main thread exits
|
||||||
|
DBG("main GL thread cancelled");
|
||||||
|
usleep(1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief viewer - main viewer process
|
||||||
|
* @param newimage - image refresh function
|
||||||
|
* @return 0 if all OK
|
||||||
|
*/
|
||||||
|
int viewer(imagefunc newimage){
|
||||||
|
if(!newimage){
|
||||||
|
WARNX("No image changing function defined");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
imageview_init();
|
||||||
|
DBG("Create new win");
|
||||||
|
createGLwin("Sample window", 1024, 1024, NULL);
|
||||||
|
if(!win){
|
||||||
|
WARNX(_("Can't open OpenGL window, image preview will be inaccessible"));
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
IMG *img = NULL;
|
||||||
|
while(1){
|
||||||
|
if(!win || win->killthread){
|
||||||
|
DBG("got killthread");
|
||||||
|
newimage((void*)-1);
|
||||||
|
signals(0); // just run common cleaner
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if((win->winevt & WINEVT_GETIMAGE) || !(win->winevt & WINEVT_PAUSE)){
|
||||||
|
if(newimage(&img)){
|
||||||
|
win->winevt &= ~WINEVT_GETIMAGE;
|
||||||
|
change_displayed_image(img); // change image if refreshed
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!win->winevt){
|
||||||
|
usleep(10000);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(win->winevt & WINEVT_SAVEIMAGE){ // save image
|
||||||
|
verbose(2, "Make screenshot\n");
|
||||||
|
saveFITS(img, NULL);
|
||||||
|
win->winevt &= ~WINEVT_SAVEIMAGE;
|
||||||
|
}
|
||||||
|
if(win->winevt & WINEVT_ROLLCOLORFUN){
|
||||||
|
roll_colorfun();
|
||||||
|
win->winevt &= ~WINEVT_ROLLCOLORFUN;
|
||||||
|
change_displayed_image(img);
|
||||||
|
}
|
||||||
|
if(win->winevt & WINEVT_EQUALIZE){
|
||||||
|
win->winevt &= ~WINEVT_EQUALIZE;
|
||||||
|
imequalize = !imequalize;
|
||||||
|
verbose(1, _("Equalization of histogram: %s"), imequalize ? N_("on") : N_("off"));
|
||||||
|
change_displayed_image(img);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// getter for events.c
|
||||||
|
windowData* getWin(){ return win;}
|
||||||
|
|||||||
30
imageview.h
30
imageview.h
@ -28,13 +28,6 @@
|
|||||||
#include "ccdfunc.h"
|
#include "ccdfunc.h"
|
||||||
#include "events.h"
|
#include "events.h"
|
||||||
|
|
||||||
typedef struct{
|
|
||||||
GLubyte *rawdata; // raw image data
|
|
||||||
int w; // size of image
|
|
||||||
int h;
|
|
||||||
int changed; // == 1 if data was changed outside (to redraw)
|
|
||||||
} rawimage;
|
|
||||||
|
|
||||||
// events from menu:
|
// events from menu:
|
||||||
// temporaly stop capture of regular sequence
|
// temporaly stop capture of regular sequence
|
||||||
#define WINEVT_PAUSE (1<<0)
|
#define WINEVT_PAUSE (1<<0)
|
||||||
@ -51,6 +44,14 @@ typedef struct{
|
|||||||
#define WIN_FLIP_LR (1<<0)
|
#define WIN_FLIP_LR (1<<0)
|
||||||
#define WIN_FLIP_UD (1<<1)
|
#define WIN_FLIP_UD (1<<1)
|
||||||
|
|
||||||
|
// common structs with events.c
|
||||||
|
typedef struct{
|
||||||
|
GLubyte *rawdata; // raw image data
|
||||||
|
int w; // size of image
|
||||||
|
int h;
|
||||||
|
int changed; // == 1 if data was changed outside (to redraw)
|
||||||
|
} rawimage;
|
||||||
|
|
||||||
typedef struct{
|
typedef struct{
|
||||||
int ID; // identificator of OpenGL window
|
int ID; // identificator of OpenGL window
|
||||||
char *title; // title of window
|
char *title; // title of window
|
||||||
@ -69,25 +70,22 @@ typedef struct{
|
|||||||
int killthread; // flag for killing data changing thread & also signal that there's no threads
|
int killthread; // flag for killing data changing thread & also signal that there's no threads
|
||||||
} windowData;
|
} windowData;
|
||||||
|
|
||||||
|
/*
|
||||||
typedef enum{
|
typedef enum{
|
||||||
INNER,
|
INNER,
|
||||||
OPENGL
|
OPENGL
|
||||||
} winIdType;
|
} winIdType;
|
||||||
|
*/
|
||||||
void imageview_init();
|
|
||||||
void closeGL();
|
void closeGL();
|
||||||
windowData *createGLwin(char *title, int w, int h, rawimage *rawdata);
|
|
||||||
windowData *getWin();
|
|
||||||
int killwindow();
|
|
||||||
void renderBitmapString(float x, float y, void *font, char *string, GLubyte *color);
|
|
||||||
void clear_GL_context();
|
|
||||||
|
|
||||||
void calc_win_props(GLfloat *Wortho, GLfloat *Hortho);
|
void calc_win_props(GLfloat *Wortho, GLfloat *Hortho);
|
||||||
|
|
||||||
void conv_mouse_to_image_coords(int x, int y, float *X, float *Y, windowData *window);
|
void conv_mouse_to_image_coords(int x, int y, float *X, float *Y, windowData *window);
|
||||||
void conv_image_to_mouse_coords(float X, float Y, int *x, int *y, windowData *window);
|
void conv_image_to_mouse_coords(float X, float Y, int *x, int *y, windowData *window);
|
||||||
|
windowData* getWin();
|
||||||
|
|
||||||
void* image_thread(void *data);
|
typedef int (*imagefunc)(IMG**);
|
||||||
void change_displayed_image(windowData *win, IMG *img);
|
|
||||||
|
int viewer(imagefunc);
|
||||||
|
|
||||||
#endif // IMAGEVIEW_H__
|
#endif // IMAGEVIEW_H__
|
||||||
|
|||||||
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-02-03 09:26+0300\n"
|
"POT-Creation-Date: 2023-02-07 16:55+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -245,59 +245,59 @@ msgstr ""
|
|||||||
msgid "Display image in OpenGL window"
|
msgid "Display image in OpenGL window"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:63
|
#: ccdfunc.c:64
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't find plugin %s: %s"
|
msgid "Can't find plugin %s: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:75
|
#: ccdfunc.c:76
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't find focuser in plugin %s: %s"
|
msgid "Can't find focuser in plugin %s: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:86
|
#: ccdfunc.c:87
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't find camera in plugin %s: %s"
|
msgid "Can't find camera in plugin %s: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:97
|
#: ccdfunc.c:98
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't find wheel in plugin %s: %s"
|
msgid "Can't find wheel in plugin %s: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:183
|
#: ccdfunc.c:184
|
||||||
msgid "Camera device unknown"
|
msgid "Camera device unknown"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:189
|
#: ccdfunc.c:190
|
||||||
msgid "Neither filename nor filename prefix pointed!"
|
msgid "Neither filename nor filename prefix pointed!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. Не могу сохранить файл
|
#. Не могу сохранить файл
|
||||||
#: ccdfunc.c:208
|
#: ccdfunc.c:209
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't save file with prefix %s"
|
msgid "Can't save file with prefix %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:356
|
#: ccdfunc.c:357
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "File saved as '%s'"
|
msgid "File saved as '%s'"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:365
|
#: ccdfunc.c:366
|
||||||
msgid "Error saving file"
|
msgid "Error saving file"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:405
|
#: ccdfunc.c:406
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Image stat:\n"
|
msgid "Image stat:\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:413
|
#: ccdfunc.c:414
|
||||||
msgid "Focuser device not pointed"
|
msgid "Focuser device not pointed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:420
|
#: ccdfunc.c:421
|
||||||
msgid "No focusers found"
|
msgid "No focusers found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -340,217 +340,213 @@ msgstr ""
|
|||||||
msgid "No wheels found"
|
msgid "No wheels found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:544
|
#: ccdfunc.c:543
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Found %d wheels, you point number %d"
|
msgid "Found %d wheels, you point number %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:548
|
#: ccdfunc.c:547
|
||||||
msgid "Can't set active wheel number"
|
msgid "Can't set active wheel number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:564
|
#: ccdfunc.c:563
|
||||||
msgid "Can't get max wheel position"
|
msgid "Can't get max wheel position"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:571
|
#: ccdfunc.c:570
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Wheel position should be from 0 to %d"
|
msgid "Wheel position should be from 0 to %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:575
|
#: ccdfunc.c:574
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set wheel position %d"
|
msgid "Can't set wheel position %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:592
|
#: ccdfunc.c:591
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%.1f seconds till exposition ends"
|
msgid "%.1f seconds till exposition ends"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:606
|
#: ccdfunc.c:605
|
||||||
msgid "Camera device not pointed"
|
msgid "Camera device not pointed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:613 ccdfunc.c:614
|
#: ccdfunc.c:612 ccdfunc.c:613
|
||||||
msgid "No cameras found"
|
msgid "No cameras found"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:649
|
#: ccdfunc.c:643
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Found %d cameras, you point number %d"
|
msgid "Found %d cameras, you point number %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:653
|
#: ccdfunc.c:647
|
||||||
msgid "Can't set active camera number"
|
msgid "Can't set active camera number"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:659
|
#: ccdfunc.c:653
|
||||||
msgid "Can't set fan speed"
|
msgid "Can't set fan speed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:660
|
#: ccdfunc.c:654
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set fan speed to %d"
|
msgid "Set fan speed to %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:665
|
#: ccdfunc.c:659
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Camera model: %s"
|
msgid "Camera model: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:666
|
#: ccdfunc.c:660
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pixel size: %g x %g"
|
msgid "Pixel size: %g x %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:672
|
#: ccdfunc.c:666
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Full array: %s"
|
msgid "Full array: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:675
|
#: ccdfunc.c:669
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Field of view: %s"
|
msgid "Field of view: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:678
|
#: ccdfunc.c:672
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Current format: %s"
|
msgid "Current format: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:681
|
#: ccdfunc.c:675
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set T to %g degC"
|
msgid "Can't set T to %g degC"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:688
|
#: ccdfunc.c:683
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shutter command: %s\n"
|
msgid "Shutter command: %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:690
|
#: ccdfunc.c:685
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't run shutter command %s (unsupported?)"
|
msgid "Can't run shutter command %s (unsupported?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. "Попытка сконфигурировать порт I/O как %d\n"
|
#. "Попытка сконфигурировать порт I/O как %d\n"
|
||||||
#: ccdfunc.c:694
|
#: ccdfunc.c:689
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Try to configure I/O port as %d"
|
msgid "Try to configure I/O port as %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:696
|
#: ccdfunc.c:691
|
||||||
msgid "Can't configure (unsupported?)"
|
msgid "Can't configure (unsupported?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:702
|
#: ccdfunc.c:698
|
||||||
msgid "Can't get IOport state (unsupported?)"
|
msgid "Can't get IOport state (unsupported?)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. "Попытка записи %d в порт I/O\n"
|
#. "Попытка записи %d в порт I/O\n"
|
||||||
#: ccdfunc.c:706
|
#: ccdfunc.c:702
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Try to write %d to I/O port"
|
msgid "Try to write %d to I/O port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:708
|
#: ccdfunc.c:704
|
||||||
msgid "Can't set IOport"
|
msgid "Can't set IOport"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:715
|
#: ccdfunc.c:711
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set gain to %g"
|
msgid "Set gain to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:716
|
#: ccdfunc.c:712
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set gain to %g"
|
msgid "Can't set gain to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:721
|
#: ccdfunc.c:717
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set brightness to %g"
|
msgid "Set brightness to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:722
|
#: ccdfunc.c:718
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set brightness to %g"
|
msgid "Can't set brightness to %g"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:730 server.c:223
|
#: ccdfunc.c:726 server.c:223
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set binning %dx%d"
|
msgid "Can't set binning %dx%d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:742 server.c:224
|
#: ccdfunc.c:738 server.c:224
|
||||||
msgid "Can't set given geometry"
|
msgid "Can't set given geometry"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:746
|
#: ccdfunc.c:742
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set %d flushes"
|
msgid "Can't set %d flushes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:750
|
#: ccdfunc.c:746
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set exposure time to %f seconds"
|
msgid "Can't set exposure time to %f seconds"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:753
|
#: ccdfunc.c:749
|
||||||
msgid "Can't change frame type"
|
msgid "Can't change frame type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:756
|
#: ccdfunc.c:752
|
||||||
msgid "Can't set bit depth"
|
msgid "Can't set bit depth"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:758
|
#: ccdfunc.c:754
|
||||||
msgid "Can't set readout speed"
|
msgid "Can't set readout speed"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:759
|
#: ccdfunc.c:755
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Readout mode: %s"
|
msgid "Readout mode: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:760
|
#: ccdfunc.c:756
|
||||||
msgid "Only show statistics"
|
msgid "Only show statistics"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. GET binning should be AFTER setgeometry!
|
#. GET binning should be AFTER setgeometry!
|
||||||
#: ccdfunc.c:762
|
#: ccdfunc.c:758
|
||||||
msgid "Can't get current binning"
|
msgid "Can't get current binning"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:776
|
|
||||||
msgid "Can't open OpenGL window, image preview will be inaccessible"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#. Захват кадра %d\n
|
#. Захват кадра %d\n
|
||||||
#: ccdfunc.c:784
|
#: ccdfunc.c:780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Capture frame %d"
|
msgid "Capture frame %d"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:786 server.c:121
|
#: ccdfunc.c:782 ccdfunc.c:830 server.c:121
|
||||||
msgid "Can't start exposition"
|
msgid "Can't start exposition"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:790 ccdfunc.c:816 ccdfunc.c:857
|
#: ccdfunc.c:786
|
||||||
msgid "Can't capture image"
|
msgid "Can't capture image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:793
|
#: ccdfunc.c:789
|
||||||
msgid "Read grabbed image"
|
msgid "Read grabbed image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ccdfunc.c:796 ccdfunc.c:820 ccdfunc.c:861
|
#: ccdfunc.c:792 ccdfunc.c:838
|
||||||
msgid "Can't grab image"
|
msgid "Can't grab image"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#. %d секунд до окончания паузы\n
|
#. %d секунд до окончания паузы\n
|
||||||
#: ccdfunc.c:837 client.c:260
|
#: ccdfunc.c:801 client.c:260
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d seconds till pause ends\n"
|
msgid "%d seconds till pause ends\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -567,28 +563,32 @@ msgstr ""
|
|||||||
msgid "Server timeout"
|
msgid "Server timeout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: imageview.c:264
|
#: imageview.c:49
|
||||||
msgid "Can't init mutex!"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: imageview.c:282
|
|
||||||
msgid "Already initialized!"
|
msgid "Already initialized!"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: imageview.c:408
|
#: imageview.c:285
|
||||||
|
msgid "Can't init mutex!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: imageview.c:387
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Histogram conversion: %s"
|
msgid "Histogram conversion: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: imageview.c:517
|
#: imageview.c:507 imageview.c:579
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Equalization of histogram: %s"
|
msgid "Equalization of histogram: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: imageview.c:517
|
#: imageview.c:507 imageview.c:579
|
||||||
msgid "on"
|
msgid "on"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: imageview.c:517
|
#: imageview.c:507 imageview.c:579
|
||||||
msgid "off"
|
msgid "off"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: imageview.c:545
|
||||||
|
msgid "Can't open OpenGL window, image preview will be inaccessible"
|
||||||
|
msgstr ""
|
||||||
|
|||||||
130
locale/ru/ru.po
130
locale/ru/ru.po
@ -7,7 +7,7 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr "Project-Id-Version: PACKAGE VERSION\n"
|
msgstr "Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2023-02-03 09:26+0300\n"
|
"POT-Creation-Date: 2023-02-07 16:54+0300\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -16,18 +16,18 @@ msgstr "Project-Id-Version: PACKAGE VERSION\n"
|
|||||||
"Content-Type: text/plain; charset=koi8-r\n"
|
"Content-Type: text/plain; charset=koi8-r\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: ccdfunc.c:592
|
#: ccdfunc.c:591
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%.1f seconds till exposition ends"
|
msgid "%.1f seconds till exposition ends"
|
||||||
msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ"
|
msgstr "%.1f ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÜËÓÐÏÚÉÃÉÉ"
|
||||||
|
|
||||||
#. %d Ñ<>екунд до окончаниÑ<C2B8> паузы\n
|
#. %d Ñ<>екунд до окончаниÑ<C2B8> паузы\n
|
||||||
#: ccdfunc.c:837 client.c:260
|
#: ccdfunc.c:801 client.c:260
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%d seconds till pause ends\n"
|
msgid "%d seconds till pause ends\n"
|
||||||
msgstr "%d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n"
|
msgstr "%d ÓÅËÕÎÄ ÄÏ ÏËÏÎÞÁÎÉÑ ÐÁÕÚÙ\n"
|
||||||
|
|
||||||
#: imageview.c:282
|
#: imageview.c:49
|
||||||
msgid "Already initialized!"
|
msgid "Already initialized!"
|
||||||
msgstr "õÖÅ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÏ!"
|
msgstr "õÖÅ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÏ!"
|
||||||
|
|
||||||
@ -39,57 +39,57 @@ msgstr "
|
|||||||
msgid "CMOS gain level"
|
msgid "CMOS gain level"
|
||||||
msgstr "ÕÒÏ×ÅÎØ Gain CMOS"
|
msgstr "ÕÒÏ×ÅÎØ Gain CMOS"
|
||||||
|
|
||||||
#: ccdfunc.c:606
|
#: ccdfunc.c:605
|
||||||
msgid "Camera device not pointed"
|
msgid "Camera device not pointed"
|
||||||
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÐÏÄËÌÀÞÅÎÏ"
|
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÐÏÄËÌÀÞÅÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:183
|
#: ccdfunc.c:184
|
||||||
msgid "Camera device unknown"
|
msgid "Camera device unknown"
|
||||||
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÏÐÏÚÎÁÎÏ"
|
msgstr "õÓÔÒÏÊÓÔ×Ï Ó×ÅÏÐÒÉÅÍÎÉËÁ ÎÅ ÏÐÏÚÎÁÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:665
|
#: ccdfunc.c:659
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Camera model: %s"
|
msgid "Camera model: %s"
|
||||||
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
|
msgstr "íÏÄÅÌØ Ó×ÅÔÏÐÒÉÅÍÎÉËÁ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:790 ccdfunc.c:816 ccdfunc.c:857
|
#: ccdfunc.c:786
|
||||||
msgid "Can't capture image"
|
msgid "Can't capture image"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||||
|
|
||||||
#: ccdfunc.c:753
|
#: ccdfunc.c:749
|
||||||
msgid "Can't change frame type"
|
msgid "Can't change frame type"
|
||||||
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÔÉÐ ËÁÄÒÁ"
|
msgstr "îÅ ÍÏÇÕ ÉÚÍÅÎÉÔØ ÔÉÐ ËÁÄÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:696
|
#: ccdfunc.c:691
|
||||||
msgid "Can't configure (unsupported?)"
|
msgid "Can't configure (unsupported?)"
|
||||||
msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
msgstr "îÅ ÍÏÇÕ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ (ÏÐÃÉÑ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||||
|
|
||||||
#: ccdfunc.c:86
|
#: ccdfunc.c:87
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't find camera in plugin %s: %s"
|
msgid "Can't find camera in plugin %s: %s"
|
||||||
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ ËÁÍÅÒÙ %s: %s"
|
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ ËÁÍÅÒÙ %s: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:75
|
#: ccdfunc.c:76
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't find focuser in plugin %s: %s"
|
msgid "Can't find focuser in plugin %s: %s"
|
||||||
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ ÆÏËÕÓÅÒÁ %s: %s"
|
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ ÆÏËÕÓÅÒÁ %s: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:63
|
#: ccdfunc.c:64
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't find plugin %s: %s"
|
msgid "Can't find plugin %s: %s"
|
||||||
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ %s: %s"
|
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ %s: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:97
|
#: ccdfunc.c:98
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't find wheel in plugin %s: %s"
|
msgid "Can't find wheel in plugin %s: %s"
|
||||||
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ ÔÕÒÅÌÉ %s: %s"
|
msgstr "îÅ ÍÏÇÕ ÎÁÊÔÉ ÐÌÁÇÉÎ ÔÕÒÅÌÉ %s: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:702
|
#: ccdfunc.c:698
|
||||||
msgid "Can't get IOport state (unsupported?)"
|
msgid "Can't get IOport state (unsupported?)"
|
||||||
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÐÏÒÔÁ I/O (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÓÏÓÔÏÑÎÉÅ ÐÏÒÔÁ I/O (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||||
|
|
||||||
#. GET binning should be AFTER setgeometry!
|
#. GET binning should be AFTER setgeometry!
|
||||||
#: ccdfunc.c:762
|
#: ccdfunc.c:758
|
||||||
msgid "Can't get current binning"
|
msgid "Can't get current binning"
|
||||||
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ ÂÉÎÎÉÎÇÁ"
|
msgstr "îÅ ÍÏÇÕ ÐÏÌÕÞÉÔØ ÔÅËÕÝÅÅ ÚÎÁÞÅÎÉÅ ÂÉÎÎÉÎÇÁ"
|
||||||
|
|
||||||
@ -101,11 +101,11 @@ msgstr "
|
|||||||
msgid "Can't get focuser limit positions"
|
msgid "Can't get focuser limit positions"
|
||||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ÆÏËÕÓÅÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:564
|
#: ccdfunc.c:563
|
||||||
msgid "Can't get max wheel position"
|
msgid "Can't get max wheel position"
|
||||||
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ËÏÌÅÓÁ"
|
msgstr "îÅ ÍÏÇÕ ÏÐÒÅÄÅÌÉÔØ ÐÒÅÄÅÌØÎÕÀ ÐÏÚÉÃÉÀ ËÏÌÅÓÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:796 ccdfunc.c:820 ccdfunc.c:861
|
#: ccdfunc.c:792 ccdfunc.c:838
|
||||||
msgid "Can't grab image"
|
msgid "Can't grab image"
|
||||||
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
msgstr "îÅ ÍÏÇÕ ÚÁÈ×ÁÔÉÔØ ÉÚÏÂÒÁÖÅÎÉÅ"
|
||||||
|
|
||||||
@ -113,7 +113,7 @@ msgstr "
|
|||||||
msgid "Can't home focuser"
|
msgid "Can't home focuser"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÆÏËÕÓÅÒ × ÎÕÌØ"
|
||||||
|
|
||||||
#: imageview.c:264
|
#: imageview.c:285
|
||||||
msgid "Can't init mutex!"
|
msgid "Can't init mutex!"
|
||||||
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
|
msgstr "îÅ ÍÏÇÕ ÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÔØ ÍØÀÔÅËÓ!"
|
||||||
|
|
||||||
@ -121,36 +121,36 @@ msgstr "
|
|||||||
msgid "Can't make exposition"
|
msgid "Can't make exposition"
|
||||||
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ"
|
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ÜËÓÐÏÚÉÃÉÀ"
|
||||||
|
|
||||||
#: ccdfunc.c:776
|
#: imageview.c:545
|
||||||
msgid "Can't open OpenGL window, image preview will be inaccessible"
|
msgid "Can't open OpenGL window, image preview will be inaccessible"
|
||||||
msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÏËÎÏ OpenGL, ÏÔÏÂÒÁÖÅÎÉÅ ÂÕÄÅÔ ÎÅÄÏÓÔÕÐÎÏ"
|
msgstr "îÅ ÍÏÇÕ ÏÔËÒÙÔØ ÏËÎÏ OpenGL, ÏÔÏÂÒÁÖÅÎÉÅ ÂÕÄÅÔ ÎÅÄÏÓÔÕÐÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:690
|
#: ccdfunc.c:685
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't run shutter command %s (unsupported?)"
|
msgid "Can't run shutter command %s (unsupported?)"
|
||||||
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ÚÁÔ×ÏÒÁ %s (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
msgstr "îÅ ÍÏÇÕ ×ÙÐÏÌÎÉÔØ ËÏÍÁÎÄÕ ÚÁÔ×ÏÒÁ %s (ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ?)"
|
||||||
|
|
||||||
#. Ð<>е могу Ñ<>охранить файл
|
#. Ð<>е могу Ñ<>охранить файл
|
||||||
#: ccdfunc.c:208
|
#: ccdfunc.c:209
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't save file with prefix %s"
|
msgid "Can't save file with prefix %s"
|
||||||
msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ Ó ÐÒÅÆÉËÓÏÍ %s"
|
msgstr "îÅ ÍÏÇÕ ÓÏÈÒÁÎÉÔØ ÆÁÊÌ Ó ÐÒÅÆÉËÓÏÍ %s"
|
||||||
|
|
||||||
#: ccdfunc.c:746
|
#: ccdfunc.c:742
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set %d flushes"
|
msgid "Can't set %d flushes"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ %d ÓÂÒÏÓÏ×"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ %d ÓÂÒÏÓÏ×"
|
||||||
|
|
||||||
#: ccdfunc.c:708
|
#: ccdfunc.c:704
|
||||||
msgid "Can't set IOport"
|
msgid "Can't set IOport"
|
||||||
msgstr "îÅ ÍÏÇÕ ÐÏÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÐÏÒÔÁ I/O"
|
msgstr "îÅ ÍÏÇÕ ÐÏÍÅÎÑÔØ ÚÎÁÞÅÎÉÑ ÐÏÒÔÁ I/O"
|
||||||
|
|
||||||
#: ccdfunc.c:681
|
#: ccdfunc.c:675
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set T to %g degC"
|
msgid "Can't set T to %g degC"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÔÅÍÐÅÒÁÔÕÒÕ × %g ÇÒÁÄã"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÔÅÍÐÅÒÁÔÕÒÕ × %g ÇÒÁÄã"
|
||||||
|
|
||||||
#: ccdfunc.c:653
|
#: ccdfunc.c:647
|
||||||
msgid "Can't set active camera number"
|
msgid "Can't set active camera number"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÊ ËÁÍÅÒÙ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÊ ËÁÍÅÒÙ"
|
||||||
|
|
||||||
@ -158,39 +158,39 @@ msgstr "
|
|||||||
msgid "Can't set active focuser number"
|
msgid "Can't set active focuser number"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ÆÏËÕÓÅÒÁ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ÆÏËÕÓÅÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:548
|
#: ccdfunc.c:547
|
||||||
msgid "Can't set active wheel number"
|
msgid "Can't set active wheel number"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÎÏÍÅÒ ÁËÔÉ×ÎÏÇÏ ËÏÌÅÓÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:730 server.c:223
|
#: ccdfunc.c:726 server.c:223
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set binning %dx%d"
|
msgid "Can't set binning %dx%d"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÂÉÎÎÉÎÇ %dx%d"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÂÉÎÎÉÎÇ %dx%d"
|
||||||
|
|
||||||
#: ccdfunc.c:756
|
#: ccdfunc.c:752
|
||||||
msgid "Can't set bit depth"
|
msgid "Can't set bit depth"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÒÑÄÎÏÓÔØ áãð"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÒÁÚÒÑÄÎÏÓÔØ áãð"
|
||||||
|
|
||||||
#: ccdfunc.c:722
|
#: ccdfunc.c:718
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set brightness to %g"
|
msgid "Can't set brightness to %g"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
||||||
|
|
||||||
#: ccdfunc.c:750
|
#: ccdfunc.c:746
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set exposure time to %f seconds"
|
msgid "Can't set exposure time to %f seconds"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÜËÓÐÏÚÉÃÉÀ × %f ÓÅËÕÎÄ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÜËÓÐÏÚÉÃÉÀ × %f ÓÅËÕÎÄ"
|
||||||
|
|
||||||
#: ccdfunc.c:659
|
#: ccdfunc.c:653
|
||||||
msgid "Can't set fan speed"
|
msgid "Can't set fan speed"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ×"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ×"
|
||||||
|
|
||||||
#: ccdfunc.c:716
|
#: ccdfunc.c:712
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set gain to %g"
|
msgid "Can't set gain to %g"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ Gain × %g"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ Gain × %g"
|
||||||
|
|
||||||
#: ccdfunc.c:742 server.c:224
|
#: ccdfunc.c:738 server.c:224
|
||||||
msgid "Can't set given geometry"
|
msgid "Can't set given geometry"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÇÅÏÍÅÔÒÉÀ"
|
||||||
|
|
||||||
@ -204,26 +204,26 @@ msgstr "
|
|||||||
msgid "Can't set position %g: out of limits [%g, %g]"
|
msgid "Can't set position %g: out of limits [%g, %g]"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÚÉÃÉÀ %g: ×ÎÅ ÐÒÅÄÅÌÏ× [%g, %g]"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÚÉÃÉÀ %g: ×ÎÅ ÐÒÅÄÅÌÏ× [%g, %g]"
|
||||||
|
|
||||||
#: ccdfunc.c:758
|
#: ccdfunc.c:754
|
||||||
msgid "Can't set readout speed"
|
msgid "Can't set readout speed"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ÓÞÉÔÙ×ÁÎÉÑ"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ÓÞÉÔÙ×ÁÎÉÑ"
|
||||||
|
|
||||||
#: ccdfunc.c:575
|
#: ccdfunc.c:574
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Can't set wheel position %d"
|
msgid "Can't set wheel position %d"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÐÏÌÏÖÅÎÉÅ ËÏÌÅÓÁ %d"
|
||||||
|
|
||||||
#: ccdfunc.c:786 server.c:121
|
#: ccdfunc.c:782 ccdfunc.c:830 server.c:121
|
||||||
msgid "Can't start exposition"
|
msgid "Can't start exposition"
|
||||||
msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ"
|
msgstr "îÅ ÍÏÇÕ ÎÁÞÁÔØ ÜËÓÐÏÚÉÃÉÀ"
|
||||||
|
|
||||||
#. Захват кадра %d\n
|
#. Захват кадра %d\n
|
||||||
#: ccdfunc.c:784
|
#: ccdfunc.c:780
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Capture frame %d"
|
msgid "Capture frame %d"
|
||||||
msgstr "úÁÈ×ÁÔ ËÁÄÒÁ %d"
|
msgstr "úÁÈ×ÁÔ ËÁÄÒÁ %d"
|
||||||
|
|
||||||
#: ccdfunc.c:678
|
#: ccdfunc.c:672
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Current format: %s"
|
msgid "Current format: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -232,30 +232,30 @@ msgstr ""
|
|||||||
msgid "Display image in OpenGL window"
|
msgid "Display image in OpenGL window"
|
||||||
msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL"
|
msgstr "ïÔÏÂÒÁÖÅÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ × ÏËÎÅ OpenGL"
|
||||||
|
|
||||||
#: imageview.c:517
|
#: imageview.c:507 imageview.c:579
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Equalization of histogram: %s"
|
msgid "Equalization of histogram: %s"
|
||||||
msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
msgstr "üË×ÁÌÉÚÁÃÉÑ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:365
|
#: ccdfunc.c:366
|
||||||
msgid "Error saving file"
|
msgid "Error saving file"
|
||||||
msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ"
|
msgstr "ïÛÉÂËÁ ÓÏÈÒÁÎÅÎÉÑ ÆÁÊÌÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:675
|
#: ccdfunc.c:669
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Field of view: %s"
|
msgid "Field of view: %s"
|
||||||
msgstr "ðÏÌÅ ÚÒÅÎÉÑ: %s"
|
msgstr "ðÏÌÅ ÚÒÅÎÉÑ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:356
|
#: ccdfunc.c:357
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "File saved as '%s'"
|
msgid "File saved as '%s'"
|
||||||
msgstr "æÁÊÌ ÓÏÈÒÁÎÅÎ ËÁË '%s'"
|
msgstr "æÁÊÌ ÓÏÈÒÁÎÅÎ ËÁË '%s'"
|
||||||
|
|
||||||
#: ccdfunc.c:413
|
#: ccdfunc.c:414
|
||||||
msgid "Focuser device not pointed"
|
msgid "Focuser device not pointed"
|
||||||
msgstr "õÓÔÒÏÊÓÔ×Ï ÆÏËÕÓÅÒÁ ÎÅ ÕËÁÚÁÎÏ"
|
msgstr "õÓÔÒÏÊÓÔ×Ï ÆÏËÕÓÅÒÁ ÎÅ ÕËÁÚÁÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:649
|
#: ccdfunc.c:643
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Found %d cameras, you point number %d"
|
msgid "Found %d cameras, you point number %d"
|
||||||
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÁÍÅÒ, ×Ù ÕËÁÚÁÌÉ %d"
|
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÁÍÅÒ, ×Ù ÕËÁÚÁÌÉ %d"
|
||||||
@ -265,22 +265,22 @@ msgstr "
|
|||||||
msgid "Found %d focusers, you point number %d"
|
msgid "Found %d focusers, you point number %d"
|
||||||
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ÆÏËÕÓÅÒÏ×, ×Ù ÕËÁÚÁÌÉ %d"
|
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ÆÏËÕÓÅÒÏ×, ×Ù ÕËÁÚÁÌÉ %d"
|
||||||
|
|
||||||
#: ccdfunc.c:544
|
#: ccdfunc.c:543
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Found %d wheels, you point number %d"
|
msgid "Found %d wheels, you point number %d"
|
||||||
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÏÌÅÓ, ×Ù ÕËÁÚÁÌÉ %d"
|
msgstr "ïÂÎÁÒÕÖÅÎÏ %d ËÏÌÅÓ, ×Ù ÕËÁÚÁÌÉ %d"
|
||||||
|
|
||||||
#: ccdfunc.c:672
|
#: ccdfunc.c:666
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Full array: %s"
|
msgid "Full array: %s"
|
||||||
msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s"
|
msgstr "ðÏÌÎÙÊ ÆÏÒÍÁÔ: %s"
|
||||||
|
|
||||||
#: imageview.c:408
|
#: imageview.c:387
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Histogram conversion: %s"
|
msgid "Histogram conversion: %s"
|
||||||
msgstr "ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
msgstr "ðÒÅÏÂÒÁÚÏ×ÁÎÉÅ ÇÉÓÔÏÇÒÁÍÍÙ: %s"
|
||||||
|
|
||||||
#: ccdfunc.c:405
|
#: ccdfunc.c:406
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Image stat:\n"
|
msgid "Image stat:\n"
|
||||||
msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n"
|
msgstr "óÔÁÔÉÓÔÉËÁ ÐÏ ÉÚÏÂÒÁÖÅÎÉÀ: \n"
|
||||||
@ -289,7 +289,7 @@ msgstr "
|
|||||||
msgid "N flushes before exposing (default: 1)"
|
msgid "N flushes before exposing (default: 1)"
|
||||||
msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)"
|
msgstr "N ÚÁÓ×ÅÞÉ×ÁÎÉÊ ÐÅÒÅÄ ÜËÓÐÏÚÉÃÉÅÊ (ÐÏ ÕÍÏÌÞÁÎÉÀ: 1)"
|
||||||
|
|
||||||
#: ccdfunc.c:189
|
#: ccdfunc.c:190
|
||||||
msgid "Neither filename nor filename prefix pointed!"
|
msgid "Neither filename nor filename prefix pointed!"
|
||||||
msgstr "îÉ ÉÍÑ ÆÁÊÌÁ, ÎÉ ÐÒÅÆÉËÓ ÎÅ ÕËÁÚÁÎÙ!"
|
msgstr "îÉ ÉÍÑ ÆÁÊÌÁ, ÎÉ ÐÒÅÆÉËÓ ÎÅ ÕËÁÚÁÎÙ!"
|
||||||
|
|
||||||
@ -297,11 +297,11 @@ msgstr "
|
|||||||
msgid "No camera device"
|
msgid "No camera device"
|
||||||
msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ"
|
msgstr "îÅ ÕËÁÚÁÎÏ ÕÓÔÒÏÊÓÔ×Ï ËÁÍÅÒÙ"
|
||||||
|
|
||||||
#: ccdfunc.c:613 ccdfunc.c:614
|
#: ccdfunc.c:612 ccdfunc.c:613
|
||||||
msgid "No cameras found"
|
msgid "No cameras found"
|
||||||
msgstr "ëÁÍÅÒ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
msgstr "ëÁÍÅÒ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:420
|
#: ccdfunc.c:421
|
||||||
msgid "No focusers found"
|
msgid "No focusers found"
|
||||||
msgstr "æÏËÕÓÅÒÏ× ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
msgstr "æÏËÕÓÅÒÏ× ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||||
|
|
||||||
@ -309,7 +309,7 @@ msgstr "
|
|||||||
msgid "No wheels found"
|
msgid "No wheels found"
|
||||||
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
msgstr "ôÕÒÅÌÅÊ ÎÅ ÏÂÎÁÒÕÖÅÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:760
|
#: ccdfunc.c:756
|
||||||
msgid "Only show statistics"
|
msgid "Only show statistics"
|
||||||
msgstr "ôÏÌØËÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÁÔÉÓÔÉËÕ"
|
msgstr "ôÏÌØËÏ ÏÔÏÂÒÁÚÉÔØ ÓÔÁÔÉÓÔÉËÕ"
|
||||||
|
|
||||||
@ -317,16 +317,16 @@ msgstr "
|
|||||||
msgid "PID file (default: "
|
msgid "PID file (default: "
|
||||||
msgstr "PID-ÆÁÊÌ (ÐÏ ÕÍÏÌÞÁÎÉÀ: "
|
msgstr "PID-ÆÁÊÌ (ÐÏ ÕÍÏÌÞÁÎÉÀ: "
|
||||||
|
|
||||||
#: ccdfunc.c:666
|
#: ccdfunc.c:660
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Pixel size: %g x %g"
|
msgid "Pixel size: %g x %g"
|
||||||
msgstr "òÁÚÍÅÒ ÐÉËÓÅÌÑ: %g x %g"
|
msgstr "òÁÚÍÅÒ ÐÉËÓÅÌÑ: %g x %g"
|
||||||
|
|
||||||
#: ccdfunc.c:793
|
#: ccdfunc.c:789
|
||||||
msgid "Read grabbed image"
|
msgid "Read grabbed image"
|
||||||
msgstr "óÞÉÔÙ×ÁÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ"
|
msgstr "óÞÉÔÙ×ÁÎÉÅ ÉÚÏÂÒÁÖÅÎÉÑ"
|
||||||
|
|
||||||
#: ccdfunc.c:759
|
#: ccdfunc.c:755
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Readout mode: %s"
|
msgid "Readout mode: %s"
|
||||||
msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s"
|
msgstr "òÅÖÉÍ ÓÞÉÔÙ×ÁÎÉÑ: %s"
|
||||||
@ -335,34 +335,34 @@ msgstr "
|
|||||||
msgid "Server timeout"
|
msgid "Server timeout"
|
||||||
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
msgstr "ôÁÊÍÁÕÔ ÓÅÒ×ÅÒÁ"
|
||||||
|
|
||||||
#: ccdfunc.c:721
|
#: ccdfunc.c:717
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set brightness to %g"
|
msgid "Set brightness to %g"
|
||||||
msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
msgstr "õÓÔÁÎÏ×ÉÔØ ÑÒËÏÓÔØ × %g"
|
||||||
|
|
||||||
#: ccdfunc.c:660
|
#: ccdfunc.c:654
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set fan speed to %d"
|
msgid "Set fan speed to %d"
|
||||||
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d"
|
msgstr "îÅ ÍÏÇÕ ÕÓÔÁÎÏ×ÉÔØ ÓËÏÒÏÓÔØ ×ÅÎÔÉÌÑÔÏÒÏ× × %d"
|
||||||
|
|
||||||
#: ccdfunc.c:715
|
#: ccdfunc.c:711
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Set gain to %g"
|
msgid "Set gain to %g"
|
||||||
msgstr "õÓÔÁÎÏ×ÉÔØ Gain × %g"
|
msgstr "õÓÔÁÎÏ×ÉÔØ Gain × %g"
|
||||||
|
|
||||||
#: ccdfunc.c:688
|
#: ccdfunc.c:683
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Shutter command: %s\n"
|
msgid "Shutter command: %s\n"
|
||||||
msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n"
|
msgstr "ëÏÍÁÎÄÁ ÚÁÔ×ÏÒÁ: %s\n"
|
||||||
|
|
||||||
#. "Попытка Ñ<>конфигурировать порт I/O как %d\n"
|
#. "Попытка Ñ<>конфигурировать порт I/O как %d\n"
|
||||||
#: ccdfunc.c:694
|
#: ccdfunc.c:689
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Try to configure I/O port as %d"
|
msgid "Try to configure I/O port as %d"
|
||||||
msgstr "ðÏÐÙÔËÁ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ ÐÏÒÔ I/O ËÁË %d"
|
msgstr "ðÏÐÙÔËÁ ÓËÏÎÆÉÇÕÒÉÒÏ×ÁÔØ ÐÏÒÔ I/O ËÁË %d"
|
||||||
|
|
||||||
#. "Попытка запиÑ<C2B8>и %d в порт I/O\n"
|
#. "Попытка запиÑ<C2B8>и %d в порт I/O\n"
|
||||||
#: ccdfunc.c:706
|
#: ccdfunc.c:702
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Try to write %d to I/O port"
|
msgid "Try to write %d to I/O port"
|
||||||
msgstr "ðÏÐÙÔËÁ ÚÁÐÉÓÉ %d × ÐÏÒÔ I/O"
|
msgstr "ðÏÐÙÔËÁ ÚÁÐÉÓÉ %d × ÐÏÒÔ I/O"
|
||||||
@ -375,7 +375,7 @@ msgstr "
|
|||||||
msgid "Wheel device not pointed"
|
msgid "Wheel device not pointed"
|
||||||
msgstr "õÓÔÒÏÊÓÔ×Ï ÔÕÒÅÌÉ ÎÅ ÕËÁÚÁÎÏ"
|
msgstr "õÓÔÒÏÊÓÔ×Ï ÔÕÒÅÌÉ ÎÅ ÕËÁÚÁÎÏ"
|
||||||
|
|
||||||
#: ccdfunc.c:571
|
#: ccdfunc.c:570
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Wheel position should be from 0 to %d"
|
msgid "Wheel position should be from 0 to %d"
|
||||||
msgstr "ðÏÚÉÃÉÑ ËÏÌÅÓÁ ÄÏÌÖÎÁ ÂÙÔØ ÏÔ 0 ÄÏ %d"
|
msgstr "ðÏÚÉÃÉÑ ËÏÌÅÓÁ ÄÏÌÖÎÁ ÂÙÔØ ÏÔ 0 ÄÏ %d"
|
||||||
@ -509,11 +509,11 @@ msgstr "
|
|||||||
msgid "observing program name"
|
msgid "observing program name"
|
||||||
msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÏÇÒÁÍÍÙ"
|
msgstr "ÎÁÚ×ÁÎÉÅ ÐÒÏÇÒÁÍÍÙ"
|
||||||
|
|
||||||
#: imageview.c:517
|
#: imageview.c:507 imageview.c:579
|
||||||
msgid "off"
|
msgid "off"
|
||||||
msgstr "×ÙËÌ"
|
msgstr "×ÙËÌ"
|
||||||
|
|
||||||
#: imageview.c:517
|
#: imageview.c:507 imageview.c:579
|
||||||
msgid "on"
|
msgid "on"
|
||||||
msgstr "×ËÌ"
|
msgstr "×ËÌ"
|
||||||
|
|
||||||
|
|||||||
70
main.c
70
main.c
@ -40,7 +40,7 @@ static int isserver = FALSE;
|
|||||||
static pid_t childpid = 0;
|
static pid_t childpid = 0;
|
||||||
|
|
||||||
void signals(int signo){
|
void signals(int signo){
|
||||||
signal(signo, SIG_IGN);
|
if(signo) signal(signo, SIG_IGN);
|
||||||
if(childpid){ // master process
|
if(childpid){ // master process
|
||||||
if(signo == SIGUSR1){ // kill child
|
if(signo == SIGUSR1){ // kill child
|
||||||
kill(childpid, signo);
|
kill(childpid, signo);
|
||||||
@ -56,7 +56,7 @@ void signals(int signo){
|
|||||||
exit(signo);
|
exit(signo);
|
||||||
}
|
}
|
||||||
// slave: cancel exposition
|
// slave: cancel exposition
|
||||||
WARNX("Get signal %d - exit", signo);
|
if(signo) WARNX("Get signal %d - exit", signo);
|
||||||
if(!GP->client){
|
if(!GP->client){
|
||||||
DBG("Cancel capturing");
|
DBG("Cancel capturing");
|
||||||
cancel();
|
cancel();
|
||||||
@ -64,8 +64,11 @@ void signals(int signo){
|
|||||||
#ifdef IMAGEVIEW
|
#ifdef IMAGEVIEW
|
||||||
DBG("KILL GL");
|
DBG("KILL GL");
|
||||||
closeGL();
|
closeGL();
|
||||||
usleep(100000);
|
usleep(10000);
|
||||||
#endif
|
#endif
|
||||||
|
closewheel();
|
||||||
|
focclose();
|
||||||
|
closecam();
|
||||||
exit(signo);
|
exit(signo);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,6 +105,8 @@ int main(int argc, char **argv){
|
|||||||
if(!GP->client) isserver = TRUE;
|
if(!GP->client) isserver = TRUE;
|
||||||
}
|
}
|
||||||
if(GP->path && !GP->client) isserver = TRUE;
|
if(GP->path && !GP->client) isserver = TRUE;
|
||||||
|
if(GP->client && (GP->commondev || GP->focuserdev || GP->cameradev || GP->wheeldev))
|
||||||
|
ERRX("Can't be client and standalone in same time!");
|
||||||
if(GP->logfile){
|
if(GP->logfile){
|
||||||
int lvl = LOGLEVEL_WARN + GP->verbose;
|
int lvl = LOGLEVEL_WARN + GP->verbose;
|
||||||
DBG("level = %d", lvl);
|
DBG("level = %d", lvl);
|
||||||
@ -119,31 +124,48 @@ int main(int argc, char **argv){
|
|||||||
signal(SIGUSR1, signals); // restart server
|
signal(SIGUSR1, signals); // restart server
|
||||||
// check for another running process in server and standalone mode
|
// check for another running process in server and standalone mode
|
||||||
if(!GP->client) check4running(self, GP->pidfile);
|
if(!GP->client) check4running(self, GP->pidfile);
|
||||||
if(!isserver && !GP->client){ // standalone mode
|
if(!isserver){ // run in standalone or client mode
|
||||||
focusers();
|
int camerainit = FALSE;
|
||||||
wheels();
|
if(!GP->client){ // standalone mode
|
||||||
ccds();
|
focusers(); // run focusers and wheels before showimage
|
||||||
|
wheels();
|
||||||
|
camerainit = prepare_ccds();
|
||||||
|
}else{ // client mode
|
||||||
|
#ifdef IMAGEVIEW
|
||||||
|
if(GP->showimage) return viewer(NULL); // TODO
|
||||||
|
#endif
|
||||||
|
if(GP->path) return start_socket(isserver, GP->path, FALSE);
|
||||||
|
if(GP->port) return start_socket(isserver, GP->port, TRUE);
|
||||||
|
|
||||||
|
}
|
||||||
|
#ifdef IMAGEVIEW
|
||||||
|
if(GP->showimage){ // activate image vindow in capture or simple viewer mode
|
||||||
|
imagefunc imfn = NULL;
|
||||||
|
if(GP->cameradev || GP->commondev){if(camerainit) imfn = ccdcaptured;} // capture mode
|
||||||
|
else imfn = NULL; // TODO - simple file viewer
|
||||||
|
return viewer(imfn);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if(camerainit) ccds();
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
LOGMSG("Started");
|
LOGMSG("Started");
|
||||||
#ifndef EBUG
|
#ifndef EBUG
|
||||||
if(isserver){
|
unsigned int pause = 5;
|
||||||
unsigned int pause = 5;
|
while(1){
|
||||||
while(1){
|
childpid = fork();
|
||||||
childpid = fork();
|
if(childpid){ // master
|
||||||
if(childpid){ // master
|
double t0 = dtime();
|
||||||
double t0 = dtime();
|
LOGMSG("Created child with pid %d", childpid);
|
||||||
LOGMSG("Created child with pid %d", childpid);
|
wait(NULL);
|
||||||
wait(NULL);
|
LOGERR("Child %d died", childpid);
|
||||||
LOGERR("Child %d died", childpid);
|
if(dtime() - t0 < 1.) pause += 5;
|
||||||
if(dtime() - t0 < 1.) pause += 5;
|
else pause = 1;
|
||||||
else pause = 1;
|
if(pause > 900) pause = 900;
|
||||||
if(pause > 900) pause = 900;
|
sleep(pause); // wait a little before respawn
|
||||||
sleep(pause); // wait a little before respawn
|
}else{ // slave
|
||||||
}else{ // slave
|
prctl(PR_SET_PDEATHSIG, SIGTERM); // send SIGTERM to child when parent dies
|
||||||
prctl(PR_SET_PDEATHSIG, SIGTERM); // send SIGTERM to child when parent dies
|
break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user