Opened 19 years ago
Closed 15 years ago
Last modified 13 years ago
#12 closed task (fixed)
Convert UI to use libmythui.
Reported by: | Isaac Richards | Owned by: | stuartm |
---|---|---|---|
Priority: | blocker | Milestone: | 0.23 |
Component: | MythTV - User Interface Library | Version: | head |
Severity: | high | Keywords: | |
Cc: | daniel@… | Ticket locked: | yes |
Description
The frontend and plugins need to be rewritten to use MythUI.
Attachments (8)
Change History (122)
comment:1 Changed 19 years ago by
Milestone: | → 0.19 |
---|---|
Status: | new → assigned |
Type: | defect → task |
comment:2 Changed 19 years ago by
comment:3 Changed 19 years ago by
It would be nice to be able to have exact x/y+wxh control over where each button in a buttongroup/menu is located on the screen.
For example if I only want a visiblerowlimit of 5 items, but I want to define the exact location information for each of the 5 "rows".
This would allow it to be very flexible when aligning to elements from a image/background/layer.
comment:4 Changed 19 years ago by
Owner: | changed from Isaac Richards to anonymous |
---|---|
Status: | assigned → new |
comment:5 Changed 19 years ago by
Owner: | changed from anonymous to Isaac Richards |
---|---|
Status: | new → assigned |
comment:6 Changed 19 years ago by
Milestone: | 0.19 → 0.20 |
---|
comment:7 Changed 19 years ago by
(In [9156]) Things now use libmythui for the main window. Nothing is actually drawn with mythui yet.
Remove MythMainWindow? from libmyth. Update the MythMainWindow? class in libmythui for the changes since it was started. Rename/move a few files/classes in libmythui so they don't conflict with libmyth for now.
Note the install location for the headers changed (from <prefix>/mythui to <prefix>/mythtv/libmythui). You may want to delete the old installed headers.
A distclean may be needed to compile everything.
Refs #12.
comment:8 Changed 19 years ago by
(In [9254]) The menu is now drawn by mythui. Random stuff might be broken. This will be slow (for now) for people without working hardware opengl accel. Still compatible with existing themes, though that probably won't last long.
Details, other than the obvious:
- Hash strings in the opengl painter with their font style.
- Make jumppoints work with mythui windows.
- Added some more compatability code to mythui to handle the old UI stuff.
- The themedmenu class still needs to broken out more into separate components.
Refs #12.
comment:9 Changed 19 years ago by
Not sure if you are already want feedback in this very early stage of development, but I experienced the following.
On my epia box, using the OpenGL from the open via driver, the background of my menu is white. The rest of the pictures are OK and the fade-in/fade-out of the menu works perfectly and looks really, really great! Maybe my experience can help you?
comment:10 Changed 19 years ago by
Priority: | blocker → critical |
---|
My Intel i810/815 videocard in 16 bit 800x600 using Xorg GLX takes 10-15 seconds to fade in or out. The CPU is 100% in mythfrontend during menu changes. It would be wonderful to have a configure option to disable opengl eye candy on the builds.
-joshua ebel
comment:11 Changed 19 years ago by
Priority: | critical → blocker |
---|
comment:12 Changed 19 years ago by
Perhaps you already noticed this but... The arrows are not getting detected by the screen->GetChildAt?(p) call in MythMainWindow?. This is strange, because they are declared as chidren of a MythScreenType?, and being a MythUIStateType they already have the area and position declared within a MainWindow?.
comment:13 Changed 19 years ago by
comment:14 Changed 19 years ago by
comment:16 Changed 19 years ago by
comment:17 Changed 19 years ago by
you probably didn't want to know this yet -
the backwards compatibility mode now seems broken
- ie when USeOpenGLPainter is set as 0 the menu entries cannot be seen - still work - you just have to have a good memory. :)
comment:18 Changed 19 years ago by
I also saw this problem with the Retro theme. The MythCenter? theme works fine. So it has something to do with specific themes. Tested it with the UseOpenGLPainter=0
comment:19 Changed 19 years ago by
comment:20 Changed 19 years ago by
It would appear that you can't 'mix n match' the QWidget and QGLWidget code on Mac OS X. If you insantiate a QGLWidget (or subclass) you need to use the QGLPainter, a QPainter will not draw correctly to the screen. Given the Mac OS X OpenGL architecture this isn't surprising. Is the 'grand plan' here to remove the QPainter approach entirely in the future ? Or to leave it in place for those systems without sufficient OpenGL performance ?
If the plan is to allow both changes I think MythMainWindow? will need some refactoring and changes in inheritance so that either there are two subclasses one for GL one for non-GL or an alternative approach with a single MythMainWindow? with a private class member to handle the different widgets. I'm happy to help with the work if I can - but I think this is probably beyond the realm of a straightforward patch 8-)
comment:21 Changed 18 years ago by
(In [9949]) Finally have a new XML parsing framework for mythui that I'm happy with. Mostly checking in so I don't change my mind again.
On a per widget type basis, parsing is significantly simpler than the old UI code, no more redundant code.
New framework allows for widget trees to be pre-defined, and then have specific overrides when actually used. This will allow defining something like the selection tree in the 'watch recordings' screen once, and using it with a single line of code in other screens (ie., mythmusic, game, video, etc all currently redefine that exact same widget in each .xml file). Should lead to much smaller/easier to create/customize themes, as well as more consistant feel over the entire theme.
Tnis isn't live or even hooked up to anything yet. Only have fonts/images/text types done so far.
Refs #12.
comment:22 Changed 18 years ago by
comment:23 Changed 18 years ago by
(In [9959]) Themes can now define a 'backgroundwindow' element that are more complex than just a single image, and will be present on all screens using mythui. See GANT for an example.
Other changes: fix theme reloading, close small font memory leak, allow images to request to be full-screen, themes can override stuff in base.xml if so desired, add alpha/pulse controls to the generic item type..
Refs #12.
comment:25 Changed 18 years ago by
Type: | task → defect |
---|
comment:26 Changed 18 years ago by
Type: | defect → task |
---|
Please don't make changes to tickets anonymously for no good reason.
comment:27 Changed 18 years ago by
Milestone: | 0.20 → 0.21 |
---|
comment:28 Changed 18 years ago by
Did you ever consider porting this to Qt4?
Qt4 has a new painting framework called Arthur which has a software rendering backend and an opengl backend. You would get the opengl acceleration "for free".
Since version 4.2 Qt also has great support for SVG and has a native SVG renderer which allows to load SVGs (or parts of them) and render them into a QWidget or QPixmap.
Perhaps this would be a good way to save some development-time and get nice new possibilities.
comment:30 Changed 17 years ago by
(In [14944]) Refs #12. Splits non-settings out of settings.h.
Settings, setting groups, setting dialogs, and setting storage clases are split out into separate headers and cpp's in this patch. settings.h still includes all of them to minimize disruptions to other files.
This is basically so I can start working on porting MythTV settings to mythui while keeping the includes clean of Qt widget headers. this doesn't require recompiling any plugins or relinking any of MythTV because the classes themselves are unchanged.
comment:31 Changed 17 years ago by
Ticket locked: | set |
---|
comment:32 Changed 17 years ago by
Ticket locked: | unset |
---|
comment:33 Changed 17 years ago by
(In [15153]) Add keypress handling and a button pressed signal to mythuibutton. Fix a text justification bug and call SetupPlacement?() when loading background images to ensure that the text rect is the correct size.
Refs #12
comment:34 Changed 17 years ago by
comment:35 Changed 17 years ago by
(In [15594]) Migrates mythcontrols over to mythui. I've preserved the look of the plugin, only changing the theme to use the new xml format.
The popup dialogs haven't been switched yet, hope to have those done tonight.
Please test and report any bugs, there was a lot of UI specific behaviour in mythcontrols and I may have missed something. The -wide theme will be committed shortly.
Refs #12
comment:37 Changed 17 years ago by
comment:38 Changed 17 years ago by
comment:39 Changed 17 years ago by
comment:40 Changed 17 years ago by
Milestone: | 0.21 → 0.22 |
---|
comment:41 Changed 17 years ago by
(In [15664]) Reverse iteration in GetChildAt?() so that we get the widget at the top of the draw order. This means that mouse clicks go to the widget foremost on the page, rather than any which happen to be behind it. Refs #12
comment:42 Changed 17 years ago by
comment:43 Changed 17 years ago by
comment:44 Changed 17 years ago by
comment:45 Changed 17 years ago by
(In [16526]) Move parsing of alignment into the base class, xmlparsebase and allow combining of vertical and horizontal values.
<align>{horizontal},{vertical}</align>
e.g. <align>left, bottom</align>
<align>right,vcenter</align>
The older form of <align>center</align>, <align>left</align> is still supported.
The behaviour of combining two vertical or two horizontal values is undefined. parseAlignment() may be modified to be stricter about the order and nature of values it accepts.
Refs #12
comment:46 Changed 17 years ago by
comment:47 Changed 17 years ago by
(In [16540]) Change the way we handle mouse click events for MythListButton?, I never liked the original method much and this is only a marginal improvement, but it works much better and doesn't require large rewrites.
Refs #12
comment:48 Changed 17 years ago by
comment:49 Changed 17 years ago by
comment:50 Changed 17 years ago by
comment:51 Changed 17 years ago by
comment:52 Changed 17 years ago by
comment:53 Changed 17 years ago by
Owner: | changed from Isaac Richards to stuartm |
---|---|
Status: | accepted → assigned |
comment:54 Changed 17 years ago by
comment:55 Changed 17 years ago by
(In [16573]) Clicking with a mouse on the up/down scroll arrows of mythlistbutton now moves within the list.
Changed the behaviour of SetItemCurrent?() to match that of MoveToNamedPosition?().
Refs #12
comment:56 Changed 17 years ago by
(In [16588]) Force an update of the listbutton when SetChecked?() or SetImage?() is called on a buttonitem. This achieves the same as [16546] without triggering segfaults in popup dialogues. Refs #12
comment:57 Changed 17 years ago by
comment:58 Changed 17 years ago by
(In [16595]) Add a method to MythListButton? to mark all button items as checked, halfchecked, fullchecked etc. Refs #12
comment:59 Changed 17 years ago by
comment:61 Changed 17 years ago by
(In [16817]) Supporting text clipping in the opengl painter to prevent text being drawn outside it's parent uitype, needed for things like scrolling text and the text entry widget. Isaac plans to add proper clipping support to the GL painter in the future, this is a workaround until that happens. refs #12
comment:62 Changed 17 years ago by
comment:63 Changed 17 years ago by
(In [16833]) Add filter option to MythUITextEdit so that we can decide to only allow numerical input, or block non alphanumeric characters etc. I also plan to allow custom regexps to be defined for filtering, but regexps are less likely to be UTF8/Unicode compatible.
Changes to allow textedit inheritance to work.
Refs #12
comment:64 Changed 17 years ago by
comment:65 Changed 17 years ago by
comment:66 Changed 17 years ago by
comment:67 Changed 17 years ago by
comment:68 Changed 17 years ago by
(In [16915]) Port mythnews to mythui. This is unfinished, but allows the basic functionality to work. Editing sites from the main screen doesn't work, the busy dialogs are disabled and a QT4 database related bug prevents configured sites from being marked as selected or removed.
8 files changed, 670 insertions(+), 1469 deletions(-)
Refs #12
comment:69 Changed 17 years ago by
comment:70 Changed 17 years ago by
comment:71 Changed 17 years ago by
(In [16954]) Don't handle Left/Right? keypresses if we are at the extreme left or right of the field, means we can now move between textedit widgets.
Added a method to return the textedit's contents, somehow this got left out of my original commit even though it appeared in the original patches.
Refs #12
comment:72 Changed 17 years ago by
comment:73 Changed 17 years ago by
(In [16996]) Add GetPosition?() to mythuitype to complement the SetPosition?() method. Refs #12
comment:74 Changed 17 years ago by
comment:75 Changed 17 years ago by
(In [17015]) Keep track of check state and add a GetCheckState?() method. Refs #12
comment:76 Changed 17 years ago by
comment:77 Changed 17 years ago by
(In [17041]) Port mythweather to mythui. Refs #12
The main screen and screen setup work which is enough to use or setup mythweather. The global setup and source setup don't yet, I should have those done in a day or two.
Diffstat for those interested in the code and theme reductions: 18 files changed, 1790 insertions(+), 3362 deletions(-)
comment:78 Changed 17 years ago by
comment:79 Changed 17 years ago by
comment:80 Changed 17 years ago by
(In [17123]) Adds an image reflection effect to MythUI. This is more proof of concept than the final implementation, I'll be optimising and tweaking it.
See http://miffteevee.co.uk/imagebin/mythui_imagereflection3.png for examples of reflection effects.
The following element belonging to <imagetype> defines the look
<reflection axis="vertical" shear="50" scale="50" length="50" />
Axis - the reflection axis {vertical,horizontal} Shear - Percentage shear of the reflection shear, affects the angle of the reflection Scale - Percentage to scale down the reflection, affects the angle between the image and the 'surface' Length - Percentage of image to retain in the reflection, affects the length of the reflection
Image transformations will be added shortly as well, allowing images to be sheared, rotated etc
N.B. It's not really intended that it be used for static theme images, reflection effects for those images would be better 'hardcoded' using your favourite graphics editor. This is intended to be used with dynamic content, album art, movie posters, preview images and gallery images.
Refs #12
comment:81 Changed 17 years ago by
(In [17174]) Adds what I'm calling 'Centre Hold' scrolling to mythlistbutton. This is where the selected item remains static in the centre of the visible list area and the list items move instead. The behaviour is similar to that of the category list in "Watch Recordings".
Adds a new element to the listbutton, <scrollstyle> which accepts values of "free", the current behaviour and "center", the new behaviour. The intention is to allow further styles to be added later.
This was tested with the vertical layout and the horizontal layout should work too, but it doesn't yet work with the grid layout and fixing that isn't a high priority at the moment. There are several reasons for adding this option now, but the one which will interest most people is to take us one step closer to a "cover flow" effect.
Refs #12
comment:82 Changed 17 years ago by
(In [17287]) Adds a spinbox widget to mythui. This is a functional placeholder until I get the time to write a more efficient version. Like the final version this inherits from mythlistbutton and adds the ability to specify an arbitrary range of numerical values, unlike the final version if you define 100 possible values then 100 items are put into the list instead of determining the next/prev values only when they are needed.
Refs #12
comment:83 Changed 16 years ago by
comment:84 Changed 16 years ago by
comment:85 Changed 16 years ago by
(In [17461]) Allow MythUIStatetype support multiple widgets per state by using mythuigroup.
Modifies the behaviour of ParseChildren? so that it no longer returns the last parsed uitype, since this behaviour is no longer required or especially useful.
Removes the mythcontext header from mythuistatetype.
Refs #12
comment:86 Changed 16 years ago by
(In [17480]) A far more versatile and capable version of mythlistbutton, renamed to mythuibuttonlist. I'll leave the old version in place until the new one is complete and the existing uses of mythlistbutton have been migrated.
This changes the XML for a buttonlist significantly and updated examples will be available in the Trac wiki soon.
Refs #12
Changed 16 years ago by
Attachment: | mythui_themedmenu.diff added |
---|
Re-written myththemedmenu, incomplete but functional
comment:88 Changed 16 years ago by
(In [18389]) Merge MythUI port of MythVideo? back to trunk.
I expect there to be some problems, this was more than a simple conversion, a lot of changes were made to the UI and refactoring was done, 6000 lines of code and theme xml were eliminated. I would not update if MythVideo? is mission-critical to you, give it a couple of weeks for the bugs to be shaken out first.
This change may break some themes.
Refs #12
comment:89 Changed 16 years ago by
comment:90 Changed 16 years ago by
(In [18614]) Cleanup MythThemedMenu? removing unused code which was accidently re-added to my patch at some point. Requires a plugin rebuild. Could an LCD user please check to see that the menu still works? Refs #12
comment:91 Changed 16 years ago by
comment:92 Changed 16 years ago by
comment:93 Changed 16 years ago by
comment:94 Changed 16 years ago by
comment:97 Changed 16 years ago by
(In [19603]) Ports the Watch Recordings screen (playbackbox) to mythui. This is a large screen and a substantial change (with 1500 fewer lines) and due too the number of popups and possible configurations of this screen there may be some overlooked problems.
The new theme is deliberately styled on the old screen so not to confuse anyone, with minimal additions to demo some of the new features. A more adventurous demo theme will be made available on the -dev list for those that want to see just what is now possible.
Known issues - Help popup is currently disabled. Preview video code is removed, to be replaced with a mythui video widget in the near future.
Please report bugs to the dev list for the moment, at least until things settle down.
Refs #12
comment:99 Changed 16 years ago by
(In [19833]) Refs #12. File browsing and selection dialog for mythui. Designed to replace various file/directory/image selection screens found in the plugins and also allow paths in the settings to be more easily selected. Supports name and type filtering, image previews etc. N.B. Functional but not feature complete.
Changed 16 years ago by
Attachment: | 00-mythcontext-protocoldialogs.patch added |
---|
Convert protocol and library mismatch dialogs to mythui
Changed 16 years ago by
Attachment: | 00-channeleditor-dialogs.patch added |
---|
Convert deletechannels menu, importicons menu and allow cancel of icon import process
comment:100 Changed 16 years ago by
Changed 16 years ago by
Attachment: | 00-12-channeleditor-dialogs.patch added |
---|
comment:101 Changed 16 years ago by
Updated patch. Removes icon import button and delete button and replaces them with menu functionality. See http://www.mjwconsult.co.uk/myth/channeleditor.png
comment:102 Changed 16 years ago by
comment:103 Changed 16 years ago by
Changed 16 years ago by
Attachment: | 00-12-transporteditor-mythui.patch added |
---|
Convert transport list editor to mythui
Changed 16 years ago by
Attachment: | 00-12-channeleditor-dialogs.2.patch added |
---|
Fixes single icon download. Fixes showing of search dialog.
comment:104 Changed 16 years ago by
Stuart, updated channeleditor patch applied which converts it all to mythui and fixes a number of bugs with the icon import in trunk such as not being able to exit whilst import is in progress.
The transporteditor patch is invalid for now - I have a much bigger patch which converts all the capturecard related dialogs which I need to get into shape for a ticket.
comment:105 Changed 15 years ago by
comment:106 Changed 15 years ago by
Status: | assigned → accepted |
---|
comment:107 Changed 15 years ago by
(In [21635]) Restructure some frontend screens around a base classes giving access to common schedule UI related functions that are currently in RecordingInfo?. For now this duplicates a small amount of code in libmythtv until the schedule editor is ported. The schedule option menus have been ported to mythui and program details moved to mythfrontend. One of the long term goals for mythui is to get the UI elements out of libmythtv and this starts to untangle things. Refs #12
comment:109 Changed 15 years ago by
(In [21831]) Port the schedule editor to mythui. This is the first commit of several, I'm breaking up the changes to make it easier to manage and make it easier to isolate and change which introduces a bug.There is no default-wide theme yet, Robert M may commit that later tonight. This leaves most of the old code in place and several screens will still use the old schedule editor so please don't open tickets for that. Later commits will add additional theme related options to the editor, port the other locations to use the new editor/RecordingRule and finally remove all the old/duplicate code from libmythtv. Refs #12
comment:110 Changed 15 years ago by
(In [21853]) Replace the remaining instances of ScheduledRecording? with RecordingRule? and remove the old schedule editor, program lister, program details and previous list from libmythtv. Viewscheddiff remains the only unported main screen now and the only significant bit of UI code in libmythtv. Refs #12
comment:111 Changed 15 years ago by
Milestone: | 0.22 → 0.23 |
---|
comment:112 Changed 15 years ago by
Component: | mythtv → MythTV - User Interface Library |
---|
comment:113 Changed 15 years ago by
Milestone: | 0.23 → 0.24 |
---|
comment:114 Changed 15 years ago by
Milestone: | 0.24 → 0.23 |
---|---|
Resolution: | → fixed |
Status: | accepted → closed |
comment:115 Changed 13 years ago by
Ticket locked: | set |
---|
One nice feature would be the ability to have a text area scroll from right to left when selected. For Example if you are scrolling through a tree list of filenames, and the name is larger than the display area have it scroll after a moment of being highlighted allowing us to see the full content. The amount of time to wait before scrolling starts could be configurable.