@@ -335,6 +335,7 @@ class MyGUI:
335
335
epsf_model = None
336
336
stars_tbl = None
337
337
isolated_stars_tbl = None
338
+ fits_header_filter = ""
338
339
339
340
# Parameter declaration and init
340
341
find_peaks_npeaks_entry = None
@@ -371,7 +372,8 @@ class MyGUI:
371
372
display_all_objects = None
372
373
candidate_stars = None
373
374
settings_filename_entry = None # special case this is only place holder for filename
374
-
375
+ auto_behavior = None
376
+ filter_entry = None
375
377
376
378
#
377
379
# The TopLoevel window containing the settings
@@ -410,6 +412,8 @@ def display_image(self):
410
412
self .canvas .create_image (0 , 0 , anchor = tk .NW , image = self .image )
411
413
self .canvas .config (scrollregion = self .canvas .bbox (tk .ALL ))
412
414
self .canvas .bind ("<Button-1>" , self .mouse_main_canvas_click )
415
+ self .canvas .bind ("<MouseWheel>" , self .on_canvas_mousewheel )
416
+ self .canvas .bind ("<Shift-MouseWheel>" , self .on_canvas_shift_mousewheel )
413
417
if self .ePSF_samples_plotted :
414
418
self .display_ePSF_samples ()
415
419
self .plot_photometry ()
@@ -462,9 +466,18 @@ def load_FITS(self, image_file):
462
466
"FITS Minimum: " + str (FITS_minimum ) + " Maximum: " +
463
467
str (FITS_maximum ))
464
468
if 'filter' in header :
465
- self .filter = str (header ['filter' ])
466
- self .set_entry_text (self .filter_entry , self .filter )
467
- self .console_msg ("Filter: " + self .filter )
469
+ self .fits_header_filter = str (header ['filter' ])
470
+ # User may want to use his own filter or filter not in Fits file
471
+ if self .auto_behavior .get ():
472
+ self .filter = self .fits_header_filter
473
+ self .filter_entry .config (state = 'normal' )
474
+ self .set_entry_text (self .filter_entry , self .filter )
475
+ self .filter_entry .config (state = 'disable' )
476
+ self .console_msg ("Filter: " + self .filter )
477
+ else :
478
+ self .filter_entry .config (state = 'normal' )
479
+ self .filter = self .filter_entry .get ().strip ()
480
+ self .console_msg ("Filter set by user: " + self .filter )
468
481
else :
469
482
self .console_msg (
470
483
"Filter name not in FITS header. Set filter manually." )
@@ -1478,6 +1491,47 @@ def mouse_selstars_canvas_click(self,event):
1478
1491
1479
1492
return
1480
1493
1494
+ ###############################################################
1495
+ #
1496
+ #
1497
+ # on_auto_behavior_checkbox_checked
1498
+ #
1499
+ # if checked, diable CCD Filter Text
1500
+ #
1501
+ ###############################################################
1502
+
1503
+ def on_auto_behavior_checkbox_checked (self ):
1504
+ if self .auto_behavior .get ():
1505
+ self .filter_entry .config (state = 'normal' )
1506
+ self .set_entry_text (self .filter_entry , self .fits_header_filter )
1507
+ self .filter_entry .config (state = 'disabled' )
1508
+ else :
1509
+ self .filter_entry .config (state = 'normal' )
1510
+
1511
+ ###############################################################
1512
+ #
1513
+ #
1514
+ # on_canvas_mousewheel
1515
+ #
1516
+ # scroll vertically
1517
+ #
1518
+ ###############################################################
1519
+
1520
+ def on_canvas_mousewheel (self , event ):
1521
+ self .canvas .yview_scroll (- 1 * (event .delta // 120 ), "units" ) # Scroll vertically
1522
+
1523
+ ###############################################################
1524
+ #
1525
+ #
1526
+ # on_canvas_shift_mousewheel
1527
+ #
1528
+ # scroll horizontally
1529
+ #
1530
+ ###############################################################
1531
+
1532
+ def on_canvas_shift_mousewheel (self , event ):
1533
+ self .canvas .xview_scroll (- 1 * (event .delta // 120 ), "units" ) # Scroll horizontally
1534
+
1481
1535
###############################################################
1482
1536
#
1483
1537
#
@@ -2500,8 +2554,7 @@ def get_comparison_stars(self):
2500
2554
#have a AUID
2501
2555
self .console_msg ("Getting AAVSO Comparison Stars..." )
2502
2556
comparison_stars = \
2503
- self .aavso_get_comparison_stars (frame_center , filter_band = str (
2504
- self .filter_entry .get ()),
2557
+ self .aavso_get_comparison_stars (frame_center , filter_band = str (self .filter ),
2505
2558
field_of_view = fov_horizontal ,
2506
2559
maglimit = self .max_ensemble_magnitude_entry .get ())
2507
2560
@@ -2900,11 +2953,21 @@ def save_settings_as(self):
2900
2953
if len (str (file_name )) > 0 :
2901
2954
self .console_msg ("Saving settings as " + str (file_name .name ))
2902
2955
self .settings_filename = str (file_name .name )
2903
- settings = {}
2956
+
2904
2957
'''
2905
2958
Use the valid_parameter list which contains the official list
2906
2959
of user parameters
2907
2960
'''
2961
+
2962
+ # But first check if auto_behavior is set (CCD Filter from FITS), if set
2963
+ # then dont save any Fits data, erase filter_entry, put back later
2964
+ if self .auto_behavior .get ():
2965
+ filter_entry = self .filter_entry .get ()
2966
+ self .filter_entry .config (state = 'normal' )
2967
+ self .set_entry_text (self .filter_entry , "" )
2968
+ self .filter_entry .config (state = 'disable' )
2969
+
2970
+ settings = {}
2908
2971
mao_parameters = list (self .valid_parameter_list )
2909
2972
for param in mao_parameters :
2910
2973
settings .update ({param : self .valid_parameter_list [param ].get ()})
@@ -2918,6 +2981,12 @@ def save_settings_as(self):
2918
2981
self .set_entry_text (self .settings_filename_entry , self .settings_filename )
2919
2982
self .settings_filename_entry .xview_scroll (len (self .settings_filename ), tk .UNITS )
2920
2983
self .console_msg ("Saved." )
2984
+
2985
+ # Put back that filter_entry if auto_behavior on
2986
+ if self .auto_behavior .get ():
2987
+ self .filter_entry .config (state = 'normal' )
2988
+ self .set_entry_text (self .filter_entry , filter_entry )
2989
+ self .filter_entry .config (state = 'disable' )
2921
2990
2922
2991
except Exception as e :
2923
2992
self .error_raised = True
@@ -3257,15 +3326,14 @@ def launch_settings(self):
3257
3326
row = 0
3258
3327
3259
3328
3260
- separator_telescope_ = ttk .Separator (settings_right_frame , orient = 'horizontal' )
3261
- separator_telescope_ .grid (row = row , columnspan = 3 , pady = 5 , sticky = tk .EW )
3329
+ separator_ = ttk .Separator (settings_right_frame , orient = 'horizontal' )
3330
+ separator_ .grid (row = row , columnspan = 3 , pady = 5 , sticky = tk .EW )
3262
3331
row += 1
3263
3332
3264
3333
"""
3265
3334
AAVSO Report Settings
3266
3335
"""
3267
- _label_ = tk .Label (
3268
- settings_right_frame , text = "AAVSO Report Settings" )
3336
+ _label_ = tk .Label (settings_right_frame , text = "AAVSO Report Settings" )
3269
3337
_label_ .grid (row = row , columnspan = 3 , sticky = tk .EW )
3270
3338
row += 1
3271
3339
@@ -3288,13 +3356,6 @@ def launch_settings(self):
3288
3356
self .exposure_entry .grid (row = row , column = 2 , ipadx = settings_entry_pad , sticky = tk .W )
3289
3357
row += 1
3290
3358
3291
- filter_label = tk .Label (settings_right_frame , text = "CCD Filter:" )
3292
- filter_label .grid (row = row , column = 0 , columnspan = 2 , sticky = tk .E )
3293
- self .filter_entry = tk .Entry (
3294
- settings_right_frame , width = extended_settings_entry_width , background = 'pink' )
3295
- self .filter_entry .grid (row = row , column = 2 , ipadx = settings_entry_pad , sticky = tk .W )
3296
- row += 1
3297
-
3298
3359
airmass_label = tk .Label (settings_right_frame , text = "Airmass:" )
3299
3360
airmass_label .grid (row = row , column = 0 , columnspan = 2 , sticky = tk .E )
3300
3361
self .airmass_entry = tk .Entry (
@@ -3331,6 +3392,21 @@ def launch_settings(self):
3331
3392
self .vizier_catalog_entry .grid (row = row , column = 2 , sticky = tk .E )
3332
3393
row += 1
3333
3394
3395
+ separator_ = ttk .Separator (settings_right_frame , orient = 'horizontal' )
3396
+ separator_ .grid (row = row , columnspan = 3 , pady = 5 , sticky = tk .EW )
3397
+ row += 1
3398
+
3399
+ from_fits_header_check = tk .Checkbutton (settings_right_frame , text = "From FITS" ,
3400
+ variable = self .auto_behavior ,
3401
+ command = self .on_auto_behavior_checkbox_checked )
3402
+ from_fits_header_check .grid (row = row , column = 0 , sticky = tk .W )
3403
+
3404
+ filter_label = tk .Label (settings_right_frame , text = "CCD Filter:" )
3405
+ filter_label .grid (row = row , column = 1 , sticky = tk .E )
3406
+ self .filter_entry = tk .Entry (settings_right_frame ,
3407
+ width = extended_settings_entry_width , background = 'pink' )
3408
+ self .filter_entry .grid (row = row , column = 2 , ipadx = settings_entry_pad , sticky = tk .W )
3409
+ row += 1
3334
3410
3335
3411
separator_ = ttk .Separator (settings_right_frame , orient = 'horizontal' )
3336
3412
separator_ .grid (row = row , columnspan = 3 , pady = 5 , sticky = tk .EW )
@@ -4649,6 +4725,10 @@ def __init__(self):
4649
4725
self .fitter_stringvar = tk .StringVar ()
4650
4726
self .fitter_stringvar .set ("TRF LS" )
4651
4727
self .display_all_objects = tk .StringVar (None , 0 ) #init to display user objects only
4728
+ self .auto_behavior = tk .BooleanVar ()
4729
+ self .auto_behavior .set (False )
4730
+
4731
+
4652
4732
4653
4733
self .launch_settings ()
4654
4734
@@ -4692,7 +4772,9 @@ def __init__(self):
4692
4772
'object_name_alpha_entry' : self .object_name_alpha_entry ,
4693
4773
'object_name_delta_entry' : self .object_name_delta_entry ,
4694
4774
'object_notes_entry' : self .object_notes_entry ,
4695
- 'display_all_objects' : self .display_all_objects
4775
+ 'display_all_objects' : self .display_all_objects ,
4776
+ 'auto_behavior' : self .auto_behavior ,
4777
+ 'filter_entry' : self .filter_entry
4696
4778
}
4697
4779
4698
4780
# if .config had a valid settings_filename, then load that one in
0 commit comments