# Path: spimagine/gui/floatslider.py
# class FloatSlider(QtWidgets.QSlider):
#     floatValueChanged = QtCore.pyqtSignal(float)
#     def __init__(self,*args):
#         super(FloatSlider,self).__init__(*args)
#         self.setRange(0,1.,100)
#         self.valueChanged.connect(self.onChanged)
# 
#         self.setStyleSheet("QToolTip { color:white;}")
# 
#     def setRange(self,minVal,maxVal,steps=100):
#         assert(minVal <= maxVal)
#         super(FloatSlider,self).setRange(0,steps)
#         self.minVal = minVal
#         self.maxVal = maxVal
#         self.steps = steps
# 
#     def _from_float(self,x):
#         ind = int(self.steps*(x-self.minVal)/(self.maxVal-self.minVal))
#         ind = max(0,min(self.steps,ind))
#         logger.debug("floatslider (id = %s):  index from float %s = %s"%(id(self), x,ind))
#         return ind
# 
#     def _from_int(self,n):
#         return self.minVal+1.*(self.maxVal-self.minVal)*n/self.steps
# 
# 
#     def setValue(self,val):
#         logger.debug("floatslider (id = %s): setValue to : %s"%(id(self),val))
#         self.floatValue = val
# 
#         # this surpressed anoying feedback
#         old = self.blockSignals(True)
#         super(FloatSlider,self).setValue(self._from_float(val))
#         self.blockSignals(old)
# 
#     def value(self):
#         return self.floatValue
#         # return self._from_int(super(FloatSlider,self).value())
# 
#     def onChanged(self,ind):
#         self.floatValue = self._from_int(ind)
#         self.floatValueChanged.emit(self.floatValue)
#         # self.floatValueChanged.emit(self._from_int(ind))
# 
# Path: spimagine/gui/gui_utils.py
# def createImageCheckbox(parent, img1=None, img2 = None, tooltip =""):
#     check = QtWidgets.QCheckBox("",parent)
#     checkStr = checkBoxStyleStr%(absPath(img1),absPath(img2))
#     if os.name =="nt":
#         checkStr = checkStr.replace("\\","/")
# 
#     check.setStyleSheet(checkStr)
#     if tooltip:
#         check.setToolTip(tooltip)
#     return check
# 
# def createStandardButton(parent,fName = None,method = None, width = 24, tooltip = ""):
#     but = QtWidgets.QPushButton("",parent)
#     but.setStyleSheet("background-color: black;color:black;color:lightgrey;")
#     if fName:
#         but.setIcon(QtGui.QIcon(fName))
#     but.setIconSize(QtCore.QSize(width,width))
#     if method:
#         but.clicked.connect(method)
#     but.setMaximumWidth(width)
#     but.setMaximumHeight(width)
#     if tooltip:
#         but.setToolTip(tooltip)
#     return but


import logging
import sys
import os
import numpy as np
import spimagine
from six.moves import zip
from PyQt5 import QtCore
from PyQt5 import QtGui, QtWidgets
from PyQt5 import QtOpenGL
from spimagine.gui.floatslider import FloatSlider
from spimagine.gui.gui_utils import createImageCheckbox,createStandardButton

from __future__ import absolute_import
from __future__ import print_function
logger = logging.getLogger(__name__)








def absPath(myPath):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
        return os.path.join(base_path, os.path.basename(myPath))
    except Exception:
        base_path = os.path.abspath(os.path.dirname(__file__))
        return os.path.join(base_path, myPath)


checkBoxStyleStr = """
    QCheckBox::indicator:checked {
    background:black;
    border-image: url(%s);}
    QCheckBox::indicator:unchecked {
    background:black;

# Path: spimagine/gui/floatslider.py
# class FloatSlider(QtWidgets.QSlider):
#     floatValueChanged = QtCore.pyqtSignal(float)
#     def __init__(self,*args):
#         super(FloatSlider,self).__init__(*args)
#         self.setRange(0,1.,100)
#         self.valueChanged.connect(self.onChanged)
# 
#         self.setStyleSheet("QToolTip { color:white;}")
# 
#     def setRange(self,minVal,maxVal,steps=100):
#         assert(minVal <= maxVal)
#         super(FloatSlider,self).setRange(0,steps)
#         self.minVal = minVal
#         self.maxVal = maxVal
#         self.steps = steps
# 
#     def _from_float(self,x):
#         ind = int(self.steps*(x-self.minVal)/(self.maxVal-self.minVal))
#         ind = max(0,min(self.steps,ind))
#         logger.debug("floatslider (id = %s):  index from float %s = %s"%(id(self), x,ind))
#         return ind
# 
#     def _from_int(self,n):
#         return self.minVal+1.*(self.maxVal-self.minVal)*n/self.steps
# 
# 
#     def setValue(self,val):
#         logger.debug("floatslider (id = %s): setValue to : %s"%(id(self),val))
#         self.floatValue = val
# 
#         # this surpressed anoying feedback
#         old = self.blockSignals(True)
#         super(FloatSlider,self).setValue(self._from_float(val))
#         self.blockSignals(old)
# 
#     def value(self):
#         return self.floatValue
#         # return self._from_int(super(FloatSlider,self).value())
# 
#     def onChanged(self,ind):
#         self.floatValue = self._from_int(ind)
#         self.floatValueChanged.emit(self.floatValue)
#         # self.floatValueChanged.emit(self._from_int(ind))
# 
# Path: spimagine/gui/gui_utils.py
# def createImageCheckbox(parent, img1=None, img2 = None, tooltip =""):
#     check = QtWidgets.QCheckBox("",parent)
#     checkStr = checkBoxStyleStr%(absPath(img1),absPath(img2))
#     if os.name =="nt":
#         checkStr = checkStr.replace("\\","/")
# 
#     check.setStyleSheet(checkStr)
#     if tooltip:
#         check.setToolTip(tooltip)
#     return check
# 
# def createStandardButton(parent,fName = None,method = None, width = 24, tooltip = ""):
#     but = QtWidgets.QPushButton("",parent)
#     but.setStyleSheet("background-color: black;color:black;color:lightgrey;")
#     if fName:
#         but.setIcon(QtGui.QIcon(fName))
#     but.setIconSize(QtCore.QSize(width,width))
#     if method:
#         but.clicked.connect(method)
#     but.setMaximumWidth(width)
#     but.setMaximumHeight(width)
#     if tooltip:
#         but.setToolTip(tooltip)
#     return but


# Path: spimagine/gui/mainsettings.py
import logging
import sys
import os
import numpy as np
import spimagine
from six.moves import zip
from PyQt5 import QtCore
from PyQt5 import QtGui, QtWidgets
from PyQt5 import QtOpenGL
from spimagine.gui.floatslider import FloatSlider
from spimagine.gui.gui_utils import createImageCheckbox,createStandardButton


from __future__ import absolute_import
from __future__ import print_function
logger = logging.getLogger(__name__)








def absPath(myPath):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
        return os.path.join(base_path, os.path.basename(myPath))
    except Exception:
        base_path = os.path.abspath(os.path.dirname(__file__))
        return os.path.join(base_path, myPath)


checkBoxStyleStr = """
    QCheckBox::indicator:checked {
    background:black;
    border-image: url(%s);}
    QCheckBox::indicator:unchecked {
    background:black;

    border-image: url(%s);}