QuickMenuReborn Vita

From GameBrew
QuickMenuReborn
Quickmenurebornvita2.png
General
AuthorIbrahim778
TypePlugins
Version2.5
LicenseMixed
Last Updated2022/05/16
Links
Download
Website
Source

QuickMenuReborn is a library for developers to easily add their own widgets, to the Vita's Quick Menu.

Installation

Installing QuickMenuReborn

Copy the plugin to your tai folder then add its path under *main to enable it

*main
ur0:tai/QuickMenuReborn.suprx

Make a folder called QuickMenuReborn (case sensitive) in ur0 or ux0 (ur0 if you use sd2vita).

Copy qmr_plugin.rco into the folder.

Reboot.

Installing plugins that use QuickMenuReborn

Simply drag and drop the plugin in the QuickMenuReborn folder you made earlier.

There is also a sample plugin provided (it is not particularly useful, just to shows most of the features)

User guide

It is recommended to first check out the sample plugin.

Developer Library

VitaSDK / DolceSDK:

  • Make sure you have installed the plugin (see above).
  • Download the file dev_pkg.zip.
  • Extract it.
  • Copy the folder quickmenureborn to your sdk's include folder so that the subdirectory quickmenureborn is inside it.
  • Copy the stubs from vitasdk_stubs to your lib folder, stubs inside stubs are for vdsuite.

VDSuite:

  • Either follow instructions for vitaSDK but using the vdsuite stubs (recommended) or,
  • Clone Repo.
  • Build with cmake and use target install_vdsuite.

Adding widgets

First thing you need for your widgets is a reference id, it doesn't need to be anything specifically, just needs to be something not likely to be used elsewhere.

Once you've gotten your id figured out you need to make a layout, this layout will need tweaking until it feels right so be prepared to experiment.

To actually add the widget you can use the QuickMenuRebornRegisterWidget, after that you will need to adjust some properties for it to show up.

You can use QuickMenuRebornSetWidgetColor and QuickMenuRebornSetWidgetSize to adjust the size, then you can use QuickMenuRebornSetWidgetPosition to adjust the position.

Assigning and managing callbacks

Checkboxes, slidebars and buttons can have callbacks assigned to them, use the QuickMenuRebornRegisterEventHanlder.

In order to save checkbox / slidebar values / positions and reassign them when the quickmenu opens you must assign recall and save callbacks.

You can either use your own custom ones and use QuickMenuRebornAssignRecallHandler and QuickMenuRebornAssignSaveHandler or you can use premade ones with QuickMenuRebornAssignDefaultSliderSave and QuickMenuRebornAssignDefaultSliderRecall and the same for other widgets.

Other than that you can assign OnLoad callbacks with QuickMenuRebornAssignOnLoadHandler.

Textures

You will first need to register a texture before you can use it, Use QuickMenuRebornRegisterTexture("texture_refrence_id", "path/to/file").

You can then use the refrence id you passed to assign the texture to the widget, use QuickMenuRebornSetWidgetTexture("widget_refrence_id", "texture_refrence_id").

For Example:

```C
     SceIoStat s;
     if(sceIoGetstat(TEST_TEXTURE_PATH, &s) >= 0) //File Exists
     {
         QuickMenuRebornRegisterWidget(TEX_PLANE_ID, NULL, plane);
         QuickMenuRebornRegisterTexture(TEXTURE_REF_ID, TEST_TEXTURE_PATH);
         QuickMenuRebornSetWidgetSize(TEX_PLANE_ID, 128, 128, 0, 0);
         QuickMenuRebornSetWidgetColor(TEX_PLANE_ID, 1,1,1,1);
         QuickMenuRebornSetWidgetTexture(TEX_PLANE_ID, TEXTURE_REF_ID);
     }
 ```

Separators

You may have noticed that the default widgets in the quick menu all have a line to separate themselves. You can use Separators in quickmenureborn to do this.

Once again these need refrence id's, You should only add separators at the start of your code so they appear at the top, DO NOT ADD SEPARATORS ON THE BOTTOM, this is for 2 reasons.

  • If your plugin is the first one, there is a separator between your widget and the accessability widgets.
  • If your widgets are in the middle, they separate with the previous ones and blend in with the next ones.

Removing Widgets and Textures

Use the QuickMenuRebornRemoveWidget function and pass in the widget refrence id.

To remove separators use the QuickMenuRebornRemoveSeparator function and pass in the refrence id.

To remove textures use the QuickMenuRebornUnregisterTexture function and pass in the refrence id.

For Example

    QuickMenuRebornRemoveWidget(BUTTON_REF_ID);
    QuickMenuRebornRemoveWidget(CHECKBOX_REF_ID);
    QuickMenuRebornRemoveWidget(TEXT_ID);
    QuickMenuRebornRemoveWidget(CHECKBOX_TEXT_ID);
    QuickMenuRebornRemoveWidget(PLANE_ID);
    QuickMenuRebornRemoveSeparator(SEPARATOR_ID); //Don't forget this!

Kernel Plugins

QuickMenuReborn does not support kernel plugins, it's not worth making a kernel plugin because kernel can't call userland functions.

It is recommended devs to make a separate user plugin for their gui, it's not hard and use syscalls to send over the commands.

Screenshots

quickmenurebornvita3.png

Changelog

v2.5

  • Implimented onDelete Callback.
  • Implimented BusyIndicator.
  • Updated to new headers.
  • New functions and improvements.

v2.4

  • Bug Fixes and optimisation.

v2.3

  • Added more info in callbacks, this'll make life easier (for devs).

v2.2

  • Fixed a bug with texture and memory.

v2.1

  • Several Bug Fixes, Now added texture suppourt.

v2.0

  • Widgets now make sounds.
  • Text looks like official ones.
  • Performance Improvements.
  • Entire rewrite (you wont cry if you read it now).
  • Added slidebars.
  • Custom RCO usage, Now we can add pretty much anything.

v1.8

  • Fix a load of bugs. Cleaned up code.

v1.7

  • Fix Bug When Updating Widgets (finally tracked it down).
  • Separators now also look like the original ones.

v1.6

  • Fixed text randomly spawning as bold.

v1.5

  • Separators didn't work how I intended, fixed it now.

v1.2

  • Fixed VitaSDK stubs.

v1.1

  • Some functions were missing in stubs, fixed include files.

v1.0

  • First Release.

External links

Advertising: