def update_overlay(self, message):
        #TODO Tracking is broken: remove all data stored for old action
        # Ultimately it would be great to have current_overlays working...
        self.current_overlays.clear()
        try:
            overlays = self.overlays[self.action_set][message.action]
        except KeyError:
            self.log.warning(
                'No color overlay defined for action set `%s` and action `%s`. '
                'Consider using `null` overlays for this action.',
                self.action_set, message.action)
            return

        for (z_order, overlay_name, from_color, to_color) in overlays:
            if not self.current_overlays[z_order]:
                self.add_overlay(overlay_name, z_order)
            fife_from = fife.Color(*from_color)
            try:
                fife_to = fife.Color(*to_color)
            except (TypeError, NotImplementedError):
                color_attribute, alpha = to_color
                color = attrgetter(color_attribute)(self.instance)
                if isinstance(color, UtilColor) or isinstance(
                        color, fife.Color):
                    fife_to = fife.Color(color.r, color.g, color.b, alpha)
                else:
                    raise TypeError(
                        'Unknown color `{}` as attribute `{}`: '
                        'Expected either fife.Color or horizons.util.Color.'.
                        format(color, to_color))
            self.change_color(z_order, fife_from, fife_to)
Exemple #2
0
 def __set__(self, obj, color):
     if isinstance(color, tuple):
         color = fife.Color(*color)
     else:
         # Force a copy to get value semantics
         color = fife.Color(color.r, color.g, color.b, color.a)
     self._getSetter(obj)(color)
Exemple #3
0
	def createColorOverlay(self):
		# create color overlay for skels
		delay = 200
		for rotation in range(0, 360, 45):
			anim = self._animationmanager.create("skel_stand_overlay" + str(rotation))
			for frame in range(4):
				resource = ("overlay_stand_"
				            + str(rotation) + "_"
				            + str(frame) + ".png")
				anim.addFrame(self._imagemanager.get(resource), delay)

			overlay = fife.OverlayColors(anim)
			# skel 1
			overlay.changeColor(fife.Color(255,0,0), fife.Color(255,0,0,80))
			overlay.changeColor(fife.Color(0,0,255), fife.Color(0,0,255,80))
			self._skel1.addColorOverlay("stand", rotation, overlay)
			# skel 2
			overlay.changeColor(fife.Color(255,0,0), fife.Color(0,255,0,128))
			overlay.changeColor(fife.Color(0,0,255), fife.Color(0,255,0,128))
			self._skel2.addColorOverlay("stand", rotation, overlay)
Exemple #4
0
	def getToolbarAreaAt(self, x, y, mark=False):
		if self.dockareamarker is None:
			self.dockareamarker = pychan.widgets.Container()
			self.dockareamarker.base_color = fife.Color(200, 0, 0, 100)
		if mark is False:
			self.dockareamarker.hide()
	
		# Mouse wasn't over any dockwidgets. See if it is near any edge of the screen instead
		if x <= self._toolbarareas["left"].getAbsolutePos()[0]+10:
			if mark:
				self.dockareamarker.position = self._toolbarareas["left"].getAbsolutePos()
				self.dockareamarker.size = (10, self._toolbarareas["left"].height)
				self.dockareamarker.show()
			return DOCKAREA["left"]
			
		elif x >= self._toolbarareas["right"].getAbsolutePos()[0]-10:
			if mark:
				self.dockareamarker.position = self._toolbarareas["right"].getAbsolutePos()
				self.dockareamarker.size = (10, self._toolbarareas["right"].height)
				self.dockareamarker.x -= 10
				self.dockareamarker.show()
			return DOCKAREA["right"]
			
		elif y <= self._toolbarareas["top"].getAbsolutePos()[1]+10:
			if mark:
				self.dockareamarker.position = self._toolbarareas["top"].getAbsolutePos()
				self.dockareamarker.size = (self._toolbarareas["top"].width, 10)
				self.dockareamarker.show()
			return DOCKAREA["top"]
			
		elif y >= self._toolbarareas["bottom"].getAbsolutePos()[1]-10:
			if mark:
				self.dockareamarker.position = self._toolbarareas["bottom"].getAbsolutePos()
				self.dockareamarker.y -= 10
				self.dockareamarker.size = (self._toolbarareas["bottom"].width, 10)
				self.dockareamarker.show()
			return DOCKAREA["bottom"]

		if mark is True:
			self.dockareamarker.hide()
		return None
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the
# Free Software Foundation, Inc.,
# 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
# ###################################################

from fife import fife

STYLES= {
    'default': {
        'default' : {
   'border_size': 2,
   'margins': (0, 0),
   'base_color' : fife.Color(40, 40, 40, 0),
   'foreground_color' : fife.Color(255, 255, 255),
   'background_color' : fife.Color(40, 40, 40, 255),
   'selection_color' : fife.Color(80, 80, 80, 255),
   'font' : 'libertine_14_black',
        },
        'Button' : {
   'border_size': 1,
   'margins' : (10, 5),
        },
        ('Icon', 'ImageButton') : {
   'border_size': 0
        },
        ('CheckBox','DropDown') : {
   'selection_color' : fife.Color(255,255,255,200),
   'background_color' : fife.Color(255,255,255,128),
Exemple #6
0
    def createStaticColorOverlays(self):
        img = self._imagemanager.load(
            "data/tilesets/toilett_singecolor_overlay.png")
        overlay = fife.OverlayColors(img)
        overlay.changeColor(fife.Color(255, 255, 255),
                            fife.Color(0, 0, 255, 128))
        for n in (1, 5, 9):
            instance = self._actorlayer.getInstance("toilett%s" % n)
            instance.addStaticColorOverlay(0, overlay)

        img = self._imagemanager.load(
            "data/tilesets/toilett_multicolor_overlay.png")
        overlay = fife.OverlayColors(img)
        overlay.changeColor(fife.Color(255, 0, 0), fife.Color(255, 0, 0, 80))
        overlay.changeColor(fife.Color(0, 255, 0), fife.Color(0, 255, 0, 80))
        overlay.changeColor(fife.Color(0, 0, 255), fife.Color(0, 0, 255, 80))
        for n in (2, 6, 10):
            instance = self._actorlayer.getInstance("toilett%s" % n)
            instance.addStaticColorOverlay(0, overlay)

        overlay.changeColor(fife.Color(255, 0, 0), fife.Color(255, 0, 0, 200))
        overlay.changeColor(fife.Color(0, 255, 0), fife.Color(0, 255, 0, 200))
        overlay.changeColor(fife.Color(0, 0, 255), fife.Color(0, 0, 255, 200))
        for n in (3, 7, 11):
            instance = self._actorlayer.getInstance("toilett%s" % n)
            instance.addStaticColorOverlay(0, overlay)
Exemple #7
0
from scripts.gui.action import Action
from scripts.gui.panel import Panel

from scripts.events import postMapShown
from scripts.events import onObjectSelected
from scripts.events import onObjectsImported

# settings for gui
_POSITION = (30, 200)
_SIZE = (200, 500)
_MAX_PREVIEW_SIZE = (120, 120)
_MODE_TEXT = 0
_MODE_IMAGE = 1
_MODES = [_MODE_TEXT, _MODE_IMAGE]

_COLOR_STEP = fife.Color(10, 10, 10)
_MAX_PREVIEW_WRAPPER_SIZE = (140, 140)

_DEFAULT_BASE_COLOR = internal.DEFAULT_STYLE['default']['base_color']
_DEFAULT_SELECTION_COLOR = internal.DEFAULT_STYLE['default']['selection_color']

# plugin default settings
_PLUGIN_SETTINGS = {
    'module': "ObjectSelectorSettings",
    'items': {
        'dockarea': 'right',
        'docked': True,
    },
}

#  Free Software Foundation, Inc.,
#  51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
# ####################################################################

from fife import fife

from fife.extensions import pychan

from pychan_demo import PyChanExample

STYLES= {
'new default': {
	'default' : {
		'border_size': 2,
		'margins': (0,0),
		'base_color' : fife.Color(128,128,128),
		'foreground_color' : fife.Color(255,255,255),
		'background_color' : fife.Color(55,55,55),
		'font' : 'samanata_small'
	},
	'Button' : {
		'border_size': 2,
		'margins' : (20,5),
		'min_size' : (100,20),
		'font' : 'samanata_small'
	},
	'CheckBox' : {
		'border_size': 0,
		'background_color' : fife.Color(0,0,0,0),
	},
	'RadioButton' : {
Exemple #9
0
	def getDockAreaAt(self, x, y, mark=False):
		if self.dockareamarker is None:
			self.dockareamarker = pychan.widgets.Container()
			self.dockareamarker.base_color = fife.Color(200, 0, 0, 100)
		if mark is False:
			self.dockareamarker.hide()
	
		for key in DOCKAREA:
			side = DOCKAREA[key]
			
			dockarea = self._dockareas[side]
			#absX, absY = dockarea.getAbsolutePos()
			#if absX <= x and absY <= y \
			#		and absX+dockarea.width >= x and absX+dockarea.height >= y:
			#	return side
			placeIn, placeBefore, placeAfter = dockarea.getDockLocation(x, y)
			if placeIn or placeBefore or placeAfter:
				if mark is True:
					if placeIn:
						self.dockareamarker.position = placeIn.getAbsolutePos()
						self.dockareamarker.size = placeIn.size
					elif placeBefore:
						self.dockareamarker.position = placeBefore.getAbsolutePos()
						if side == "left" or side == "right":
							self.dockareamarker.size = (placeBefore.width, 10)
						else:
							self.dockareamarker.size = (10, placeBefore.height)
					elif placeAfter:
						self.dockareamarker.position = placeAfter.getAbsolutePos()
						
						if side == "left" or side == "right":
							self.dockareamarker.size = (placeAfter.width, 10)
							self.dockareamarker.y += placeAfter.height-10
						else:
							self.dockareamarker.size = (10, placeAfter.height)
							self.dockareamarker.x += placeAfter.width-10
						
					self.dockareamarker.show()
				return side
			

		# Mouse wasn't over any dockwidgets. See if it is near any edge of the screen instead
		if x <= self._dockareas["left"].getAbsolutePos()[0]+10:
			if mark:
				self.dockareamarker.position = self._dockareas["left"].getAbsolutePos()
				self.dockareamarker.size = (10, self._dockareas["left"].height)
				self.dockareamarker.show()
			return DOCKAREA["left"]
			
		elif x >= self._dockareas["right"].getAbsolutePos()[0]-10:
			if mark:
				self.dockareamarker.position = self._dockareas["right"].getAbsolutePos()
				self.dockareamarker.size = (10, self._dockareas["right"].height)
				self.dockareamarker.x -= 10
				self.dockareamarker.show()
			return DOCKAREA["right"]
			
		elif y <= self._dockareas["top"].getAbsolutePos()[1]+10:
			if mark:
				self.dockareamarker.position = self._dockareas["top"].getAbsolutePos()
				self.dockareamarker.size = (self._dockareas["top"].width, 10)
				self.dockareamarker.show()
			return DOCKAREA["top"]
			
		elif y >= self._dockareas["bottom"].getAbsolutePos()[1]-10:
			if mark:
				self.dockareamarker.position = self._dockareas["bottom"].getAbsolutePos()
				self.dockareamarker.y -= 10
				self.dockareamarker.size = (self._dockareas["bottom"].width, 10)
				self.dockareamarker.show()
			return DOCKAREA["bottom"]

		if mark is True:
			self.dockareamarker.hide()
		return None
Exemple #10
0
	def getDockAreaAt(self, x, y, mark=False):
		""" returns the dock area at the given cursor coordinates (if possible)
		
			also used for highlighting the dock area (this method is used
			on drag mouse events of a B{Panel} widget)
		
		@type	x:	int
		@param	x:	cursor x coordinates
		@type	y:	int
		@param	y:	cursor y coordinates
		@type	mark:	bool
		@param	mark:	flag to wether show the dock area marker (red area indicator) or not
		@rtype	side:	str
		@return	side:	dockarea id (e.g. 'right', 'left' ...)
		"""
		side = None
		
		if self.dockareamarker is None:
			self.dockareamarker = pychan.widgets.Container()
			self.dockareamarker.base_color = fife.Color(200, 0, 0, 100)
		if mark is False:
			self.dockareamarker.hide()
	
		for key in DOCKAREA:
			side = DOCKAREA[key]
			
			dockarea = self._dockareas[side]
			#absX, absY = dockarea.getAbsolutePos()
			#if absX <= x and absY <= y \
			#		and absX+dockarea.width >= x and absX+dockarea.height >= y:
			#	return side
			placeIn, placeBefore, placeAfter = dockarea.getDockLocation(x, y)
			if placeIn or placeBefore or placeAfter:
				if mark is True:
					if placeIn:
						self.dockareamarker.position = placeIn.getAbsolutePos()
						self.dockareamarker.size = placeIn.size
					elif placeBefore:
						self.dockareamarker.position = placeBefore.getAbsolutePos()
						if side == "left" or side == "right":
							self.dockareamarker.size = (placeBefore.width, 10)
						else:
							self.dockareamarker.size = (10, placeBefore.height)
					elif placeAfter:
						self.dockareamarker.position = placeAfter.getAbsolutePos()
						
						if side == "left" or side == "right":
							self.dockareamarker.size = (placeAfter.width, 10)
							self.dockareamarker.y += placeAfter.height-10
						else:
							self.dockareamarker.size = (10, placeAfter.height)
							self.dockareamarker.x += placeAfter.width-10
						
					self.dockareamarker.show()
				return side

		# reset side, next attempt to find a new home
		side = None

		# Mouse wasn't over any dockwidgets. See if it is near any edge of the screen instead
		if x <= self._dockareas["left"].getAbsolutePos()[0]+10:
			if mark:
				self.dockareamarker.position = self._dockareas["left"].getAbsolutePos()
				self.dockareamarker.size = (10, self._dockareas["left"].height)
				self.dockareamarker.show()
			side = DOCKAREA["left"]
			return side
			
		elif x >= self._dockareas["right"].getAbsolutePos()[0]-10:
			if mark:
				self.dockareamarker.position = self._dockareas["right"].getAbsolutePos()
				self.dockareamarker.size = (10, self._dockareas["right"].height)
				self.dockareamarker.x -= 10
				self.dockareamarker.show()
			side = DOCKAREA["right"]
			return side
			
		elif y <= self._dockareas["top"].getAbsolutePos()[1]+10:
			if mark:
				self.dockareamarker.position = self._dockareas["top"].getAbsolutePos()
				self.dockareamarker.size = (self._dockareas["top"].width, 10)
				self.dockareamarker.show()
			side = DOCKAREA["top"]
			return side
			
		elif y >= self._dockareas["bottom"].getAbsolutePos()[1]-10:
			if mark:
				self.dockareamarker.position = self._dockareas["bottom"].getAbsolutePos()
				self.dockareamarker.y -= 10
				self.dockareamarker.size = (self._dockareas["bottom"].width, 10)
				self.dockareamarker.show()
			side = DOCKAREA["bottom"]
			return side

		if mark is True:
			self.dockareamarker.hide()
			
		return side
Exemple #11
0
 def __get__(self, obj, objtype=None):
     color = self._getGetter(obj)()
     return fife.Color(color.r, color.g, color.b, color.a)