diff --git a/license_short.txt b/license_short.txt index 99491fb..138d505 100644 --- a/license_short.txt +++ b/license_short.txt @@ -1,9 +1,4 @@ -Reggie Next - a supercharged fork of the modern level editor Copyright (C) 2014 Treeki, Tempus, angelsl, JasonP27, Kinnay, MalStar1000, RoadrunnerWMC Development forums: http://reggienext.byethost11.com/ - This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 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, see . \ No newline at end of file diff --git a/readme.md b/readme.md index 6141fd3..c91e9c4 100644 --- a/readme.md +++ b/readme.md @@ -3,9 +3,9 @@ ---------------------------------------------------------------- -Homepage: http://rvlution.net/reggie/ -Support: http://rvlution.net/forums/ -On GitHub: https://github.com/RoadrunnerWMC/Reggie-Next +Homepage & Support: http://reggienext.nsmbwii.com +GitHub: https://github.com/RoadrunnerWMC/Reggie-Next +Mac Port Github: https://github.com/MalStar1000/Reggie-Next-Mac ---------------------------------------------------------------- @@ -60,7 +60,7 @@ Developers: * JasonP27 - ReggieMod Developer: Programmer, UI, Sprite Images * Kamek64 - Reggie! Newer Sprites Developer: Programmer, Sprite Images * ZementBlock - Sprite Data - * MalStar1000 - Sprite Images, Other + * MalStar1000 - Sprite Images, Mac Port, Other * Grop - Sprite Data * joietyfull64 - Sprite Data * MidiGuyDP - NewerSMBW Background Images & Names diff --git a/reggie.py b/reggie.py index dc07e53..8f62209 100644 --- a/reggie.py +++ b/reggie.py @@ -144,6 +144,7 @@ def loadResources(self): Reads the info from self.cfgData and loads stuff """ self.basePix = QtGui.QPixmap(os.path.join('reggiedata', self.cfgData['base_image'])) + #print(os.getcwd()) def loadFont(name): fname = self.cfgData.get(name + '_font', 'Arial') @@ -153,11 +154,13 @@ def loadFont(name): wLim = self.cfgData.get(name + '_wrap_limit', 1024) position = self.cfgData.get(name + '_position', (0, 0)) centered = self.cfgData.get(name + '_centered', False) + weight = self.cfgData.get(name + '_font_weight', 50) font = QtGui.QFont() font.setFamily(fname) font.setBold(bold) font.setPointSize(size) + font.setWeight(weight) return font, position, color, centered, wLim self.versionFontInfo = loadFont('version') @@ -2443,7 +2446,7 @@ def LoadNumberFont(): if hasattr(s, 'WindowsVersion'): NumberFont = QtGui.QFont('Tahoma', 7) elif hasattr(s, 'MacintoshVersion'): - NumberFont = QtGui.QFont('Lucida Grande', 9) + NumberFont = QtGui.QFont('Helvetica Neue', 9) else: NumberFont = QtGui.QFont('Sans', 8) @@ -9664,9 +9667,9 @@ def InitAsEnglish(self): 15: 'Take a full size screenshot of your level for you to share', 16: 'Change Game Path...', 17: 'Set a different folder to load the game files from', - 18: 'Reggie Next Preferences...', + 18: 'Preferences', 19: 'Change important Reggie Next settings', - 20: 'Exit Reggie Next', + 20: 'Exit', 21: 'Exit the editor', 22: 'Select All', 23: 'Select all items in this area', @@ -10511,8 +10514,31 @@ def __init__(self, scene, parent): self.XScrollBar = QtWidgets.QScrollBar(Qt.Horizontal, parent) self.setVerticalScrollBar(self.YScrollBar) self.setHorizontalScrollBar(self.XScrollBar) + self.grabGesture(Qt.PinchGesture) self.currentobj = None + + #Gesture for Zoom + def event(self,event): + print('First Cond: ', event.type(), QtCore.QEvent.Gesture) + if event.type() == QtCore.QEvent.Gesture: + return self.myGestureZoomingFunction(event) + return QtWidgets.QGraphicsView.event(self, event) + + def myGestureZoomingFunction(self, event): + # Make your zoom code here + print('Second Cond: ', event.gesture(Qt.PinchGesture)) + if event.gesture(Qt.PinchGesture): + gesture = event.gesture(Qt.PinchGesture) + scale = gesture.scaleFactor() + print('Scale Factor: ', scale) + # scale = scale + self.scale(scale, scale) / 60 + + # accept the event + event.accept() + return True + def mousePressEvent(self, event): """ @@ -14606,6 +14632,9 @@ def __init__(self): """ Creates and initializes the widget """ + + QtWidgets.QGraphicsView.__init__(self) + QtWidgets.QWidget.__init__(self) maxwidth = 512-128 maxheight = 20 @@ -14653,6 +14682,7 @@ def __init__(self): self.setMinimumWidth(maxwidth) self.setMaximumWidth(maxwidth) self.setMaximumHeight(maxheight) + # self.grabGesture(Qt.PinchGesture) def sliderMoved(self): """ @@ -14670,6 +14700,30 @@ def findIndexOfLevel(self, level): for i, mainlevel in enumerate(mainWindow.ZoomLevels): if float(mainlevel) == float(level): return i + #Gesture for Zoom + #def event(self, event, level): + ''' print('First Cond: ', event.type(), QtCore.QEvent.Gesture) + if event.type() == QtCore.QEvent.Gesture: + return self.myGestureZoomingFunction(event) + return QtWidgets.QGraphicsView.event(self, event) + + def myGestureZoomingFunction(self, event): + # Make your zoom code here + print('Second Cond: ', event.gesture(Qt.PinchGesture)) + if event.gesture(Qt.PinchGesture): + gesture = event.gesture(Qt.PinchGesture) + ZoomTo = gesture.scaleFactor() + print('Scale Factor: ', scale) + # scale = scale + self.scale(ZoomTo, ZoomTo) / 60 + + # accept the event + event.accept() + return True''' + + ''' def zoomGesture(self) + # We need something to add here. ''' + class ZoomStatusWidget(QtWidgets.QWidget): """ @@ -15500,7 +15554,7 @@ def __init__(self): # set up the window QtWidgets.QMainWindow.__init__(self, None) - self.setWindowTitle('Reggie Level Editor Next') + self.setWindowTitle('Reggie Next') self.setWindowIcon(QtGui.QIcon('reggiedata/icon.png')) self.setIconSize(QtCore.QSize(16, 16)) @@ -15515,13 +15569,19 @@ def __init__(self): self.view.XScrollBar.valueChanged.connect(self.XScrollChange) self.view.YScrollBar.valueChanged.connect(self.YScrollChange) self.view.FrameSize.connect(self.HandleWindowSizeChange) - + #self.view.unifiedTitleAndToolBarOnMac = True + #self.setAttribute(Qt.WA_unifiedTitleAndToolBarOnMac) + #self.view.setAttribute(QWidgets.WA_unifiedTitleAndToolBarOnMac, True) + + # make a 'ribbon' placeholder self.ribbon = None # done creating the window! self.setCentralWidget(self.view) - + # self.view.setAttribute(Qt.WA_TranslucentBackground, True) + #self.setAttribute(Qt.WA_TranslucentBackground, True) + # set up the clipboard stuff self.clipboard = None self.systemClipboard = QtWidgets.QApplication.clipboard() @@ -15529,6 +15589,7 @@ def __init__(self): # we might have something there already, activate Paste if so self.TrackClipboardUpdates() + # self.grabGesture(Qt.PinchGesture) def __init2__(self): @@ -15596,6 +15657,11 @@ def SetupActionsAndMenus(self): """ self.RecentMenu = RecentFilesMenu() self.GameDefMenu = GameDefMenu() + #self.view.setWindowFlags(Qt.WA_UnifiedTitleAndToolBarOnMac) + #self.setAttribute(Qt.WA_unifiedTitleAndToolBarOnMac, True) + self.setUnifiedTitleAndToolBarOnMac(True) + #self.setAttribute(Qt.WA_MacBrushedMetal, True) + self.ribbon = None if UseRibbon: @@ -15666,7 +15732,7 @@ def createMenubar(self): self.CreateAction('showcomments', self.HandleCommentsVisibility, GetIcon('comments'), trans.stringOneLine('MenuItems', 116), trans.stringOneLine('MenuItems', 117), QtGui.QKeySequence('Ctrl+0'), True) self.CreateAction('grid', self.HandleSwitchGrid, GetIcon('grid'), trans.stringOneLine('MenuItems', 60), trans.stringOneLine('MenuItems', 61), QtGui.QKeySequence('Ctrl+G'), False) self.CreateAction('zoommax', self.HandleZoomMax, GetIcon('zoommax'), trans.stringOneLine('MenuItems', 62), trans.stringOneLine('MenuItems', 63), QtGui.QKeySequence('Ctrl+PgDown'), False) - self.CreateAction('zoomin', self.HandleZoomIn, GetIcon('zoomin'), trans.stringOneLine('MenuItems', 64), trans.stringOneLine('MenuItems', 65), QtGui.QKeySequence.ZoomIn, False) + self.CreateAction('zoomin', self.HandleZoomIn, GetIcon('zoomin'), trans.stringOneLine('MenuItems', 64), trans.stringOneLine('MenuItems', 65), Qt.PinchGesture, True) #QGesture.PinchGesture self.CreateAction('zoomactual', self.HandleZoomActual, GetIcon('zoomactual'), trans.stringOneLine('MenuItems', 66), trans.stringOneLine('MenuItems', 67), QtGui.QKeySequence('Ctrl+0'), False) self.CreateAction('zoomout', self.HandleZoomOut, GetIcon('zoomout'), trans.stringOneLine('MenuItems', 68), trans.stringOneLine('MenuItems', 69), QtGui.QKeySequence.ZoomOut, False) self.CreateAction('zoommin', self.HandleZoomMin, GetIcon('zoommin'), trans.stringOneLine('MenuItems', 70), trans.stringOneLine('MenuItems', 71), QtGui.QKeySequence('Ctrl+PgUp'), False) @@ -17852,6 +17918,28 @@ def HandleZoomOut(self): if zi >= 0: self.ZoomTo(self.ZoomLevels[zi]) +#Gesture for Zoom +#def event(self, event, level): +#print('First Cond: ', event.type(), QtCore.QEvent.Gesture) +#if event.type() == QtCore.QEvent.Gesture: +#return self.myGestureZoomingFunction(event) +#return self.handleZoomIn(self, event) + +#def myGestureZoomingFunction(self, event): + # Make your zoom code here + #print('Second Cond: ', event.gesture(Qt.PinchGesture)) + #if event.gesture(Qt.PinchGesture): + #gesture = event.gesture(Qt.PinchGesture) + #ZoomTo = gesture.scaleFactor() + #print('Scale Factor: ', scale) + # scale = scale + #self.zoomLevel(zoomLevel, zoomLevel) + + + # accept the event + # event.accept() + #return True + @QtCore.pyqtSlot() def HandleZoomActual(self): @@ -17884,6 +17972,22 @@ def ZoomTo(self, z): self.ZoomLevel = z self.view.setTransform(tr) self.levelOverview.mainWindowScale = z/100.0 + + '''def event(self, event, level): + print('First Cond: ', event.type(), QtCore.QEvent.Gesture) + if event.type() == QtCore.QEvent.Gesture: + return self.myGestureZoomingFunction(event) + return self.handleZoomIn(self, event) + if event.Gesture(Qt.PinchGesture): + gesture = event.gesture(Qt.PinchGesture) + ZoomTo = gesture.scaleFactor() + print('Scale Factor: ', scale) + self.zoomLevel(zoomLevel, zoomLevel) + + # accept the event + event.accept() + return True''' + zi = self.ZoomLevels.index(z) if UseRibbon: @@ -19524,7 +19628,7 @@ def main(): setSetting('GamePath', path) break - # Check to see if we have anything saved + # check to see if we have anything saved autofile = setting('AutoSaveFilePath') if autofile is not None: autofiledata = setting('AutoSaveFileData', 'x') diff --git a/reggiedata/old splash stuff/ oldesplash.png b/reggiedata/old splash stuff/ oldesplash.png new file mode 100644 index 0000000..3e2aa92 Binary files /dev/null and b/reggiedata/old splash stuff/ oldesplash.png differ diff --git a/reggiedata/old splash stuff/splash_meter_l.png b/reggiedata/old splash stuff/splash_meter_l.png new file mode 100644 index 0000000..fc7ff4b Binary files /dev/null and b/reggiedata/old splash stuff/splash_meter_l.png differ diff --git a/reggiedata/old splash stuff/splash_meter_m.png b/reggiedata/old splash stuff/splash_meter_m.png new file mode 100644 index 0000000..392fca2 Binary files /dev/null and b/reggiedata/old splash stuff/splash_meter_m.png differ diff --git a/reggiedata/old splash stuff/splash_meter_r.png b/reggiedata/old splash stuff/splash_meter_r.png new file mode 100644 index 0000000..56801af Binary files /dev/null and b/reggiedata/old splash stuff/splash_meter_r.png differ diff --git a/reggiedata/splash.png b/reggiedata/splash.png index 3e2aa92..0e52a89 100644 Binary files a/reggiedata/splash.png and b/reggiedata/splash.png differ diff --git a/reggiedata/splash_config.txt b/reggiedata/splash_config.txt index 81ddf01..1ba8823 100644 --- a/reggiedata/splash_config.txt +++ b/reggiedata/splash_config.txt @@ -1,25 +1,28 @@ Base_Image:splash.png -Version_Font:Segoe UI Semibold +Version_Font:Microsoft New Tai Lue Version_Font_Bold:True -Version_Font_Color:4C0000 -Version_Font_Size:14 -Version_Position:800,223 +Version_Font_Color:ff0000 +Version_Font_Size:30 +Version_Position:881,250 Version_Centered:True -Loading_Font:Segoe UI Semibold -Loading_Font_Bold:True -Loading_Font_Color:4C0000 -Loading_Font_Size:26 -Loading_Position:315,252 +Version_Font_Weight:60 +Loading_Font:Segoe UI +Loading_Font_Bold:False +Loading_Font_Color:FF0000 +Loading_Font_Size:24 +Loading_Position:160,320 Loading_Centered:False -Copyright_Font:Segoe UI Semibold +Loading_Font_Weight:25 +Copyright_Font:Segoe UI Copyright_Font_Bold:True Copyright_Font_Color:FF0000 -Copyright_Font_Size:8 -Copyright_Position:325,310 +Copyright_Font_Size:14 +Copyright_Position:159,360 Copyright_Centered:False -Copyright_Wrap_Limit:490 +Copyright_Wrap_Limit:700 +Copyright_Font_Weight:20 Meter_Left:splash_meter_l.png Meter_Mid:splash_meter_m.png Meter_Right:splash_meter_r.png -Meter_Position:670,265 -Meter_Width:161 \ No newline at end of file +Meter_Position:245,531 +Meter_Width:803 \ No newline at end of file diff --git a/reggiedata/splash_meter_l.png b/reggiedata/splash_meter_l.png index fc7ff4b..b7cc698 100644 Binary files a/reggiedata/splash_meter_l.png and b/reggiedata/splash_meter_l.png differ diff --git a/reggiedata/splash_meter_m.png b/reggiedata/splash_meter_m.png index 392fca2..b7cc698 100644 Binary files a/reggiedata/splash_meter_m.png and b/reggiedata/splash_meter_m.png differ diff --git a/reggiedata/splash_meter_r.png b/reggiedata/splash_meter_r.png index 56801af..b7cc698 100644 Binary files a/reggiedata/splash_meter_r.png and b/reggiedata/splash_meter_r.png differ diff --git a/reggiedata/themes/Cavern/icolg/icon-area.png b/reggiedata/themes/Cavern/icolg/icon-area.png new file mode 100755 index 0000000..947859e Binary files /dev/null and b/reggiedata/themes/Cavern/icolg/icon-area.png differ diff --git a/reggiedata/themes/Cavern/icosm/icon-events.png b/reggiedata/themes/Cavern/icosm/icon-events.png new file mode 100755 index 0000000..59973d0 Binary files /dev/null and b/reggiedata/themes/Cavern/icosm/icon-events.png differ diff --git a/reggiedata/themes/Cavern/levelview.xml b/reggiedata/themes/Cavern/levelview.xml new file mode 100755 index 0000000..16bf067 --- /dev/null +++ b/reggiedata/themes/Cavern/levelview.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/reggiedata/themes/Cavern/main.xml b/reggiedata/themes/Cavern/main.xml new file mode 100755 index 0000000..c1f7443 --- /dev/null +++ b/reggiedata/themes/Cavern/main.xml @@ -0,0 +1,16 @@ + + + + + + + + + \ No newline at end of file diff --git a/reggiedata/themes/Cavern/ui.css b/reggiedata/themes/Cavern/ui.css new file mode 100755 index 0000000..659511a --- /dev/null +++ b/reggiedata/themes/Cavern/ui.css @@ -0,0 +1,3 @@ +QCheckBox { + color: red; + } \ No newline at end of file diff --git a/reggiedata/themes/Dark.rt b/reggiedata/themes/Dark.rt new file mode 100644 index 0000000..462279b Binary files /dev/null and b/reggiedata/themes/Dark.rt differ diff --git a/reggiedata/themes/RVLutionRed.rt b/reggiedata/themes/RVLutionRed.rt new file mode 100644 index 0000000..ef4257a Binary files /dev/null and b/reggiedata/themes/RVLutionRed.rt differ diff --git a/spritelib.py b/spritelib.py index b2b041b..7a40ac0 100644 --- a/spritelib.py +++ b/spritelib.py @@ -80,7 +80,7 @@ def GetImg(imgname, image=False): imgname = str(imgname) # Try to find the best path - path = 'reggiedata/sprites/' + imgname + path = '../../../reggiedata/sprites/' + imgname for folder in reversed(SpritesFolders): # find the most recent copy tryPath = folder + '/' + imgname @@ -121,7 +121,7 @@ def LoadBasicSuite(): ImageCache['Blocks'] = Blocks # Load the overrides - Overrides = QtGui.QPixmap('reggiedata/overrides.png') + Overrides = QtGui.QPixmap('../../../reggiedata/overrides.png') Blocks = [] x = Overrides.width() // 24 y = Overrides.height() // 24