1
0
mirror of git://projects.qi-hardware.com/gmenu2x.git synced 2024-11-26 11:56:16 +02:00
Commit Graph

630 Commits

Author SHA1 Message Date
Paul Cercueil
2ab44489a1 Execute the links directly, don't use the shell
This breaks one thing: the "params" option of the links must be
only one parameter (without spaces). The only way to actually
set this option being to edit the config files manually, it is
pretty safe to assume it will never contain two parameters.
2013-12-11 12:34:01 +01:00
Paul Cercueil
6ef3f3b190 Redirect to log by redefining stdout and stderr 2013-12-11 12:34:01 +01:00
Paul Cercueil
7c1af3a03b Use 'opkrun' to execute OPK files 2013-12-11 12:34:01 +01:00
Paul Cercueil
53ba01c40a Don't set called programs as group leaders
The comment of this code indicates that it is needed for
SDL apps to work correctly.

However, I don't see any valid reason for the apps we
launch to be running in a different group.

Removing it didn't make any apparent difference, so unless
I'm proven wrong, it'll stay gone from now on.
2013-12-11 12:31:47 +01:00
Paul Cercueil
31ad27f2bd Do not try to change the permissions of the executables 2013-12-11 12:31:29 +01:00
Paul Cercueil
61a79cd3d9 InputDialog: Make SETTINGS button confirm and MENU button cancel 2013-11-30 02:27:45 +01:00
Paul Cercueil
246fd8630c Output log to /var/log/gmenu2x.log 2013-11-08 11:27:34 +01:00
Paul Cercueil
217a9b5cd6 Remove calls to setInputSpeed(), as it only needs to be called once 2013-09-26 18:59:22 -03:00
Paul Cercueil
8452c037ac Remove calls to sync()
This is not a low-level tool to deal with the filesystem, using
sync() here is nonsense and just bogs down the system for nuts.
2013-09-26 18:58:12 -03:00
Paul Cercueil
6947997d44 Fix build for platforms without libopk 2013-09-19 17:26:32 +02:00
Paul Cercueil
0e4180460b Recover last session from main() instead of constructor
This fixes a bug where the apps using the file selector wouldn't be
launched at all when selecting a new file after a session recover.
2013-09-07 17:02:38 -04:00
Paul Cercueil
e86a96c73f Fixes the Selector returning empty file/directory names
This fixes commit ba5ef51269
2013-09-07 16:47:18 -04:00
Paul Cercueil
3ce314c65d Make the InputManager handle analog sticks as input 2013-09-07 11:09:56 -04:00
Paul Cercueil
dba6c32109 Change API of InputManager: we don't care about key release events 2013-09-07 11:00:57 -04:00
Paul Cercueil
ba5ef51269 Make the Selector return the canonicalised absolute pathname 2013-09-05 19:23:27 -04:00
Paul Cercueil
b73391486f Simplify again the prototype of LinkApp as gmenu2x->input is public 2013-09-05 19:20:54 -04:00
Paul Cercueil
1ff17d83c9 Add function GMenu2X::getTouchscreen(), to simplify Link and LinkApp prototypes 2013-09-05 19:19:16 -04:00
Paul Cercueil
20339c8849 Allow exiting the selector with B when not in explorer mode 2013-08-30 07:02:56 -04:00
Paul Cercueil
5eb8fb7fd7 Revert "When started, load all OPKs in a thread to boost startup time"
Loading dynamically at startup is a very bad idea, as it
confuses the "load state before exiting" feature of GMenu2X:
the file selector will pass the file to a different program,
the cursor will move to select a different app, etc.

This reverts commit 5c631d610e.
2013-08-28 13:49:08 -04:00
Paul Cercueil
5c631d610e When started, load all OPKs in a thread to boost startup time 2013-08-28 13:25:10 -04:00
Paul Cercueil
5d8fb6520f Code factorisation (Add function inject_user_event() to utilities) 2013-08-28 13:14:08 -04:00
Paul Cercueil
3ff6dc93f2 Also search the Default skin in the user directory for skin files
This fixes a segmentation fault occuring on the wallpaper dialog
when trying to select a wallpaper located in the Default skin in
the user directory, when the current skin is not "Default".
2013-08-28 11:32:23 -04:00
Maarten ter Huurne
965340a39c Fixed bug with launch screen and double buffering
LinkApp::drawRun() assumes the layers below are already painted when
it is called, but this was not the case. With single buffering, the
previous frame was still there so it still looked good, but with
double buffering the buffer typically contains an outdated screen.

Long term I think the launch should happen at the outermost scope,
so all destructors get a chance to run. This commit is a small step
in that direction, by exiting the main loop before launching.
2013-08-16 10:41:16 +02:00
Maarten ter Huurne
8d38decc82 Pass full path to LinkApp::launch 2013-08-16 09:46:16 +02:00
Maarten ter Huurne
d6deb29ba0 Eliminated selectedDir argument to LinkApp::launch() 2013-08-16 09:38:16 +02:00
Maarten ter Huurne
6c80a663e1 Check for empty strings using empty() instead of comparing to "" 2013-08-16 09:16:04 +02:00
Maarten ter Huurne
8472acc26c Removed checks for manuals and screenshots in JPEG and BMP format
Support for loading JPEG and BMP images was removed a long time ago,
so there is no point in looking for files in those formats.
2013-08-14 13:30:17 +02:00
Maarten ter Huurne
666be4d354 Fixed text area coordinates in TextDialog
Take top and bottom bar height as defined by skin into account.
2013-08-14 13:25:07 +02:00
Maarten ter Huurne
91dd708476 Added method GMenu2X::getContentArea() 2013-08-14 12:56:15 +02:00
Maarten ter Huurne
19fc3cb4d1 Added "bottomBarHeight" item to skin
There was already "topBarHeight", but the height of the bottom bar was
still hardcoded.
2013-08-14 12:23:15 +02:00
Maarten ter Huurne
1ffae36004 Made Surface argument to drawTopBar/drawBottomBar() mandatory 2013-08-14 11:47:29 +02:00
Maarten ter Huurne
69b2b795a2 Make GMenu2X::initBG() private 2013-08-14 11:47:29 +02:00
Maarten ter Huurne
b18e3fa6a8 Don't pass screen coordinates to drawScrollBar()
The scroll bar always spans the content area of the screen: the
position and height depend only on the theme and not on who is
drawing it.

Note that the coordinates passed were wrong in most cases, so this
commit fixes the scroll bar positioning for several dialogs.
2013-08-14 11:47:29 +02:00
Maarten ter Huurne
ea85b10d31 Reduce use of HAVE_LIBOPK inside LinkApp class as well
In commit de30b3f9 several outside uses were removed by always defining
isOpk(), this commit does the same for LinkApp itself.
2013-08-14 11:47:29 +02:00
Maarten ter Huurne
9c497e7867 Remove "don't leave" feature
If the application in question daemonizes, it will continue running
no matter whether we start it with system() or execlp(). So I don't
see a reason for this feature to exist and removing it means less
code paths to worry about.
2013-08-14 11:47:28 +02:00
Maarten ter Huurne
dfa5413b5b Removed the word "Color" from the labels in the skin settings menu
The labels were longer than the space before the RGBA controls and
the fact that these are colors is already clear from the context
(such as having an RGBA control after it ;).

I tried to update the translated versions of these labels as well.
However, since I don't speak most of these languages, it is possible
the result is grammatically incorrect. If this is the case, please
mail me a correction.
2013-08-14 11:47:28 +02:00
Maarten ter Huurne
742444c919 Removed Button class
It was only used to share implementation between IconButton and Link.
However, there was only one non-trivial method, handleTS(), and that
method used a different code path for each use case: doubleClick was
always false for IconButton and always true for Link. So the total
amount of code was actually reduced by eliminating this code sharing.

The main motivation for this split is that I can now freely refactor
Link without having to worry about IconButton.
2013-08-14 04:26:04 +02:00
Maarten ter Huurne
6378fcfcd7 Make Link and IconButton inherit from Button privately
Each part of the code deals with either Links or IconButtons, but
not both: the base class is only used to share implementation and
not interface. Make this explicit by doing private inheritance.
2013-08-13 01:47:02 +02:00
Maarten ter Huurne
06ee35bb7a Make ButtonBox deal with IconButtons instead of generic Buttons
Nowhere in the code do we actually mix IconButtons and Links (the other
Button subclass), so I'm thinking of breaking up this class hierarchy
or at least making the inheritance private.

Also switched to C++11 style loops.
2013-08-13 00:34:04 +02:00
Maarten ter Huurne
90afa096e7 Query animation status instead of storing it
This makes it a lot easier to support more than one possible animation
in the same layer.
2013-08-12 19:41:56 +02:00
Maarten ter Huurne
f820bf8d6e Scroll when link cursor moves into top/bottom row
Previously, the links would scroll when the cursor was about to move
out of screen. By scrolling earlier, the user gets a view of the next
row before it becomes the current row. This allows a longer reaction
time to switch from vertical to horizontal navigation when looking for
a particular link in the grid.
2013-08-12 06:11:18 +02:00
Maarten ter Huurne
6cdd5694d3 Minor cleanups in Menu::linkUp/Down() and setLinkIndex() 2013-08-12 05:54:20 +02:00
Maarten ter Huurne
0d0eebe365 Made Link/LinkApp::searchIcon() protected (instead of public) 2013-08-12 05:05:06 +02:00
Maarten ter Huurne
02dd542ea5 Renamed section left/right images
Since we adopted the circular navigation, there is no more need for
separate enabled and disabled images.
2013-08-12 01:38:32 +02:00
Maarten ter Huurne
de30b3f98f Define LinkApp::isOpk() also when OPK support is disabled
This reduces the number of required preprocessor directives, leading to
more readable code and more code being examined by the compiler (useful
to spot problems). Since the method is inlined, the compiler should be
able to eliminate the same amount of code that the preprocessor would,
only at a later stage of the compilation.
2013-08-12 00:13:18 +02:00
Maarten ter Huurne
271ef00c18 Call Menu::selLinkApp() only once in GMenu2X::editLink() 2013-08-12 00:08:28 +02:00
Maarten ter Huurne
84fe36b5e8 Implemented wrap around for context menu option selection 2013-08-11 23:50:20 +02:00
Maarten ter Huurne
76117663ff Converted the context menu to a Layer
This fixes a bug with the captured background being wrong when using
double buffering. Also it ensures that for example the clock in the
status bar is updated when the context menu is open.
2013-08-11 23:46:04 +02:00
Maarten ter Huurne
945e29986a Cleaned up GMenu2X::contextMenu() 2013-08-11 20:57:13 +02:00
Maarten ter Huurne
8de59b5c04 Animate section header changes 2013-08-11 05:17:12 +02:00
Maarten ter Huurne
f414ce4685 Allow layers to play animations 2013-08-11 01:35:43 +02:00
Maarten ter Huurne
71f4391cda Moved all code for opening the context menu into the Menu class
All of the entries in the context menu affect sections and links, so
the context menu should be considered part of the main menu, not of
the global / background context.
2013-08-09 19:09:57 +02:00
Maarten ter Huurne
3f299f62b6 Set initial key repeat delay to a more sensible value
Previously it was set to 1 ms, which in practice means "as fast as
you can" and leads to a lot of unintended repeats.
2013-08-09 18:18:51 +02:00
Maarten ter Huurne
346067896a Put background painting and global keys in new Background layer
The battery status was put into a separate class instead of directly
into the Background class.
2013-08-09 18:01:51 +02:00
Maarten ter Huurne
b0d1d9e55f Declare Surface methods that don't change the surface as "const"
This allows source surfaces (such as icons) to be passed around as
const references.
2013-08-09 17:47:34 +02:00
Maarten ter Huurne
46626030b2 Clock: Update current time atomically
Writing hours and minutes separately while the string representation
is being constructed could lead to an incorrect result on an hour
boundary. Avoid this by using an atomic timestamp.

With GCC 4.8.1 on MIPS this atomic timestamp is lock free.
2013-08-09 04:03:47 +02:00
Maarten ter Huurne
9e1f717d9b Made Clock destruction safe
SDL does not guard against the final callback still executing when the
call to remove the timer returns. So we have to make sure the object
we access on the callback is not prematurely destructed. This commit
uses shared_ptr and weak_ptr to ensure that.

Note that we sort-of have a singleton again, only now it is private
and safely destructed.
2013-08-09 03:13:02 +02:00
Maarten ter Huurne
9158b90a45 Made Clock simpler and more reliable
Removed the suspend check: the best thing we can do after oversleeping
is the same as when we're woken right on time: fetch the time and
reschedule for the next minute boundary.

Don't create a new timer on every callback; instead return the next
interval to SDL.
2013-08-07 03:08:48 +02:00
Maarten ter Huurne
a15339d425 Cleanups of Clock class
Don't make Clock a singleton. While there should be no reason to
instantiate this class more than once, there is no problem with doing
that either. Removing the singleton makes it easier to control access
to the instance. It also avoids the rather nasty construct that was
used to delete it.

Make sure the timer callback function is a proper C function, since
SDL is a C library. This requires some trickery to be able to call
a private method from the callback, but I found a way using an
intermediate nested class. The compiler should be able to inline this
to eliminate any overhead.

Also some minor cleanups.
2013-08-07 02:55:23 +02:00
Maarten ter Huurne
f71ea3bcee Call Menu::skinUpdated() earlier in initMenu()
That method initializes linkColumns, which is divided by in
setLinkIndex().
2013-08-06 19:59:35 +02:00
Maarten ter Huurne
4a392a9173 Use reference to SurfaceCollection in Menu::paint()
This should have been a reference all along, but somehow I forgot to
actually type the "&".
2013-08-06 19:57:38 +02:00
Maarten ter Huurne
63029d85d7 Use shared_ptr for layers
This allows transient layers to be deleted automatically when they are
dismissed, while persistent layers will be kept alive by their other
owner(s).
2013-08-06 02:34:03 +02:00
Maarten ter Huurne
6d868a895a Implemented layer system for painting and events
The long term goal is to be able to use a single event loop regardless
of which submenu or alternative mode is active.
2013-08-06 01:55:32 +02:00
Maarten ter Huurne
074668336e Handle menu-related buttons inside Menu class 2013-08-05 16:43:22 +02:00
Maarten ter Huurne
d588b97b34 Removed InputManager::waitForReleasedButton()
This method was never called.

And I cannot really think of a scenario in which it is useful to wait
for any button to be released: a particular button or all buttons I can
imagine, but not any button.
2013-08-05 16:01:50 +02:00
Maarten ter Huurne
e6300ab07a Changed section headers to be displayed in a circular fashion
Instead of having a list and wrapping between beginning and end, always
put the current section in the middle and show the previous and next
sections using wrap-around.
2013-08-05 14:54:42 +02:00
Maarten ter Huurne
903ccc2cfe Switch from mega to giga when showing large disk/card sizes
Also made our use of 1024-based prefixes explicit by using MiB/GiB.
2013-08-05 02:02:04 +02:00
Maarten ter Huurne
bdf3cfdf86 Moved linkColumns and linkRows fields into Menu class 2013-08-05 00:51:36 +02:00
Maarten ter Huurne
8d7ac6e0ba Center links horizontally 2013-08-05 00:42:59 +02:00
Maarten ter Huurne
f65a59a02f Fixed scrollbar size for links area
Made sure it fills the space between the top and bottom bar. Use a one
pixel margin; I tried without margins but it didn't look nice.

Also cleaned up the paint code a bit.
2013-08-05 00:02:56 +02:00
Maarten ter Huurne
41b0551595 Moved menu touch handling code into Menu class 2013-08-04 23:19:15 +02:00
Maarten ter Huurne
1eeba171dd Moved menu painting code into Menu class 2013-08-04 21:14:29 +02:00
Maarten ter Huurne
cbe7735f73 Put main loop painting code in separate methods
Also declare the relevant variables with a reduced scope, where
possible.
2013-08-04 03:47:23 +02:00
Maarten ter Huurne
f8dc4c7bb8 Don't construct non-functional Font objects
Replaced Font constructor with factory method, so that if the TTF
cannot be loaded, the Font object is not constructed. The normal C++
way of handling this is with exceptions, but we're compiling with
-fno-exceptions.
2013-08-04 00:58:32 +02:00
Maarten ter Huurne
724aefe482 Renamed ASFont class to just Font
Originally the font implementation was based on SFont, but it was
recently replaced by an SDL_ttf based implementation, so the name
no longer made sense.
2013-08-03 22:30:12 +02:00
Maarten ter Huurne
0046fa9e19 Made ASFont::utf8Code() a function in inputdialog.cpp instead
The implementation doesn't make sense to me, but that's something for
another day; at least it is together with the code that calls it now.
2013-08-03 22:02:50 +02:00
Maarten ter Huurne
a9b5d8bd19 Moved most Menu::loadIcons() code into Link/LinkApp classes
The code still has a lot of overlap with the other methods of Link and
LinkApp, but at least it is in the same place now.

Since this was the last outside use, setIconPath() could be declared
as 'protected'.
2013-08-02 21:24:20 +02:00
Maarten ter Huurne
40372d14ef Cleaned up Menu::loadIcons()
Most changes involve not calling the same method with the same
arguments again and again. Also use C++11 range-based loops.
2013-08-02 20:53:38 +02:00
Maarten ter Huurne
a7b31669bb Restrict access to Link::recalcCoordinates()
This method was only called from within the Link class itself.
2013-08-02 20:53:02 +02:00
Maarten ter Huurne
dd55b7290b Do not draw NULL icon
If for whatever reason no icon at all could be loaded, then skip
drawing the icon rather than crashing on the NULL pointer.
2013-08-01 14:37:56 +02:00
Maarten ter Huurne
fb8f4e6e72 The "tr1" namespace is no longer needed now that we're on C++11 2013-08-01 14:37:56 +02:00
Paul Cercueil
de9b3cd27d Make sure the joystick subsystem is inited before InputManager starts 2013-07-29 16:54:12 -04:00
Paul Cercueil
fcb2618286 Open all available joysticks 2013-07-29 13:21:36 -04:00
Paul Cercueil
50b3bb2b7f Revert the log level to INFO
It was modified by error to DEBUG by commit 88f54e1ccc
2013-07-29 13:02:06 -04:00
Paul Cercueil
88f54e1ccc Drop incredibly dirty and huge file FastDelegate.h
It's way too over-engineered for what we need to do, and we can
do much simpler using C++11.
2013-07-29 12:58:25 -04:00
Paul Cercueil
9951ab2ab5 Switched to C++11 2013-07-29 12:55:58 -04:00
Paul Cercueil
152ed5cb29 Drop enum constants of unsupported button actions 2013-07-29 12:51:42 -04:00
Paul Cercueil
e0109dfe55 Initialize the timers subsystem of SDL at the beginning
This fixes a bug where disabling the backlight timeout would
prevent the clock from working correctly.
2013-07-22 00:20:18 -04:00
Paul Cercueil
47bbc0b673 Added a clock on the bottom bar 2013-07-21 23:54:09 -04:00
Paul Cercueil
b0fa6db97d Use an enum instead of hardcoded values for the user-injected codes 2013-07-21 23:52:35 -04:00
Paul Cercueil
a0515ad356 Make the file selector accept all files by default 2013-07-21 15:43:41 -04:00
Paul Cercueil
a682d10657 Load the localized title and description of an OPK if available 2013-07-20 21:21:36 -04:00
Paul Cercueil
bec8d8756f Don't prepend the mounpoint to the binary path if not inside the OPK 2013-07-19 15:25:54 -04:00
Paul Cercueil
5255bf6de3 Destroy all registered Monitor objects when the Menu is destroyed 2013-07-19 14:50:46 -04:00
Paul Cercueil
9dae4b76df Accept meta-data named *.all.desktop in OPK files
This could be used to create platform-independent packages. It can
be useful for instance in the case where the executable is a script,
or when the package points to an executable that is present on all
systems on which OPKs are supposed to run.
2013-07-19 14:41:17 -04:00
Paul Cercueil
b6dfdc6ef5 Stop watching a directory when it has been reported as removed 2013-07-19 14:35:45 -04:00
Paul Cercueil
ebce540dfc Exit the thread properly in the destructor of Monitor objects 2013-07-19 14:29:51 -04:00
Paul Cercueil
d5280ebc7b Use sigaction() instead of deprecated function signal() 2013-07-19 13:58:12 -04:00
Paul Cercueil
84a987e9d5 When loading multiple OPKs, don't order links each time one is added 2013-07-19 12:50:20 -04:00
Paul Cercueil
41e4cff7ac Add a MediaMonitor, which will watch CARD_ROOT for mountpoints
Each time a directory will appear in CARD_ROOT, the MediaMonitor
will try to load all OPKs found in CARD_ROOT/${directory}/apps
2013-07-19 12:37:56 -04:00
Paul Cercueil
69b9657af4 Add function openPackagesFromDir() to simplify constructor of Menu 2013-07-19 12:01:25 -04:00
Paul Cercueil
36c4205e0e Don't try to read OPKs in /media/./apps and /media/../apps 2013-07-19 11:57:35 -04:00
Paul Cercueil
04d9d9322d Remove trailing slash from CARD_ROOT 2013-07-19 11:54:09 -04:00
Paul Cercueil
0264b724d6 Start inotify with working mask (fixes previous commit) 2013-07-19 11:47:27 -04:00
Paul Cercueil
5e7bcf3a1f Remove all links of an "apps" dir when it is removed or renamed 2013-07-18 21:34:03 -04:00
Paul Cercueil
f308ed983b Prepare the Monitor class for proper inheritance 2013-07-18 21:32:23 -04:00
Paul Cercueil
cc869c07a8 Fix link insertion/deletion when OPKs are overwritten from SSH/FTP 2013-07-18 21:27:27 -04:00
Paul Cercueil
91f381fa07 Allow an OPK to use an icon provided by the theme 2013-07-18 17:49:33 -04:00
Paul Cercueil
bcb3e98ddc Order the links in alphabetical order 2013-07-18 17:38:09 -04:00
Paul Cercueil
9029deceeb Fix translations in user directory not correctly loaded 2013-07-18 17:14:21 -04:00
Paul Cercueil
32d100ee2a Change the "GMenu2X starting" message
It contained outdated instructions.
2013-07-18 17:03:01 -04:00
Paul Cercueil
504641a6cf Fix the function that sets the icon of a Link 2013-07-18 17:00:18 -04:00
Paul Cercueil
dfad7c39a7 Remove all links of an OPK when moved out of the monitored folder
It was previously removing only one link, but an OPK can provide
multiples links.
2013-07-18 16:29:56 -04:00
Paul Cercueil
13b3d8e0ca Monitor OPK folders using inotify and automatically add/delete links 2013-07-16 13:36:18 -04:00
Paul Cercueil
1467c9b9d7 Don't try to find OPKs inside non-existing directories 2013-07-16 12:44:30 -04:00
Paul Cercueil
78ad051756 Split huge function readPackages into two functions 2013-07-10 18:57:56 -04:00
Paul Cercueil
1337eb5ed8 Update filter of manual selection dialog to *.man.png *.txt 2013-07-08 12:21:43 -04:00
Paul Cercueil
ca811ea43d Match only *.png files for the application icon selector 2013-07-08 12:20:30 -04:00
Paul Cercueil
e1968c3830 Add *.elf to the filter of the explorer and the "add link" dialog 2013-07-08 02:27:53 -04:00
Paul Cercueil
aa8b21e076 Update file extension filter for manually added applications
Updated to *.bin *.dge *.sh *.py and extension-less files.
2013-07-08 02:24:55 -04:00
Paul Cercueil
5790740af6 Match all files by default in the file dialog
Due to recent changes, it was displaying only files without
extension.
2013-07-08 02:24:09 -04:00
Paul Cercueil
6d44fb3a75 Use the "*" filter to match all files
The empty "" filter was previously matching all the files; since
a few commits it now matches the files without extensions. The
new "*" filter allows again to match all files.
2013-07-08 02:21:42 -04:00
Paul Cercueil
9737810bcb Remove the "unlock VT" feature; it has been moved to its own program 2013-07-05 17:51:59 -04:00
Paul Cercueil
4ed21f27e5 Fix extension filter of the wallpaper dialog 2013-07-05 17:08:09 -04:00
Paul Cercueil
3558dfbfa2 Fix extension filters of the Explorer
It will now list files without extension, *.bin, *.sh, *.dge, and
*.py files.
2013-07-05 14:48:13 -04:00
Paul Cercueil
dad8d1bad5 Fix extension filter in file selection dialog
This fixes commit eb63294231
2013-07-05 14:42:55 -04:00
Paul Cercueil
46386a2054 Drop the bitmap font; use a TTF font instead
This allows to display UTF-8 characters, and is as such a good
step towards full internationalization.
2013-07-05 14:07:46 -04:00
Paul Cercueil
eb63294231 Don't call tolower() on the whole filenames, only on extensions
tolower() will trigger an assertion failure in the case where the
string contains UTF-8 codes. This is not a problem as only the
file extension needs to be processed, and that one should contain
only ASCII.
2013-07-05 14:00:46 -04:00
Paul Cercueil
abc461bf95 Fix build on 32-bit targets...
This fixes commit 59a456690b
which introduced a regression.
2013-07-03 23:45:38 -04:00
Paul Cercueil
59a456690b Fix build on 64-bit systems 2013-07-03 23:17:24 -04:00
Paul Cercueil
a0690ba59e Remove useless clipper 2013-06-16 20:52:20 -04:00
Paul Cercueil
4347c340a6 Align the links the same way whether or not a scrollbar is present
Previously, when a scrollbar was present, the links were starting
at a different X position than without the scrollbar.
2013-06-16 20:48:37 -04:00
Paul Cercueil
c58b3a535e Update GMenu2X to use the latest libopk v1.0 API 2013-05-26 19:06:53 -04:00
Paul Cercueil
2cef732602 Fix crash occuring when an unknown MIME type is specified in OPK 2013-04-19 14:25:23 -03:00
Maarten ter Huurne
bcbedc8f40 Updated code calling opk_extract_file().
I changed the return type from char* to void* in libopk, now updating
the gmenu2x code to match.
2013-02-05 19:05:44 +01:00
Maarten ter Huurne
90ec4b9ace Ignore OPK files of which the name starts with a dot
These are not actual OPK files, but metadata (I assume) storage that
Mac OS X adds to vfat file systems. The current version of libopk has
extremely poor error handling, so ignoring these files avoids a crash.
But even when libopk is fixed, not trying to open these files as OPKs
will be useful since it saves time.
2013-01-24 23:26:30 +01:00
Maarten ter Huurne
e4d78bee60 Made GMenu2X::menu private
There was only one outside use; turned that into a new public method
on the GMenu2X class.
2012-12-20 22:01:30 +01:00
Maarten ter Huurne
a18730ee13 Changed text color of warnings from yellow to magenta
Yellow is almost unreadable if the console background is white.
2012-12-20 17:54:15 +01:00
Paul Cercueil
610b489d51 Add support of text manuals (.man.txt files) inside OPK archives 2012-12-08 04:26:48 -03:00
Paul Cercueil
f2e3efd359 Hide the 'Edit' option if there's nothing to configure 2012-12-08 01:59:11 -03:00
Paul Cercueil
a60d97fbff Hide the selector dir/browser link options if OPK doesn't open a file 2012-12-08 01:45:21 -03:00
Paul Cercueil
c9fc163bea Add --disable-cpufreq switch to disable clock management 2012-12-08 01:03:33 -03:00
Paul Cercueil
473949bb4f Remove hardcoded MHz values, use the defined main/max clocks instead 2012-12-06 20:53:39 -03:00
Paul Cercueil
389253b4c6 Load the skin's wallpaper if the default one is not yet defined 2012-12-04 14:21:22 -03:00
Paul Cercueil
efdf766102 Enable support for multiple .desktop for one platform inside OPKs 2012-11-29 23:44:58 -03:00
Paul Cercueil
6629a63871 Renamed 'dingux' platform to 'a320'
Dingux being now replaced by OpenDingux, which covers other platforms
than the A320, the platform corresponding to the A320 is now named
accordingly.
2012-11-27 02:14:08 -03:00
Paul Cercueil
c6a83e1ed7 Open OPKs only if compatible with the current platform 2012-11-18 18:52:23 -03:00
Paul Cercueil
d4c086a64d Add initial support for the GCW Zero 2012-11-18 18:41:20 -03:00
Paul Cercueil
77046f3553 Add support for reading manuals located inside OPK archives 2012-11-11 19:47:45 -03:00
Paul Cercueil
8d96f3c261 Update to use the latest libopk API, and simplify loadPNG 2012-11-05 18:48:48 -03:00
Paul Cercueil
0b922e97f3 For non-OPK programs, chdir() to the app's directory as well 2012-10-23 16:34:01 +02:00
Paul Cercueil
b8112d1a73 Fix a bug where having multiple MIME types would crash GMenu2X 2012-10-23 16:19:00 +02:00
Paul Cercueil
df981eb03a Drop the 'remove link' option on the context menu of OPKs 2012-10-23 06:45:56 +02:00
Paul Cercueil
64eb86f8e8 Default the 'browser' option to 'true'.
This permits the 'browser' option to be saved for OPK packages
as well.
2012-10-23 06:39:51 +02:00
Paul Cercueil
4c4f452abb Hide parameters not suitable for OPKs on the context menu 2012-10-23 06:33:27 +02:00
Paul Cercueil
dec1a8956a Assign an icon for a given link only if it hasn't been done before 2012-10-23 06:20:03 +02:00
Paul Cercueil
c94968f533 Memorize the selector's directory as the default one for later use
When a app is launched with a file selected with the built-in file
selector, we memorize the directory on which the file was found,
so that a future launch of that application will directly open
that directory.
2012-10-23 05:34:21 +02:00
Paul Cercueil
a04b9e3ab3 Save changes made on the link of an OPK on the user directory. 2012-10-23 05:32:48 +02:00
Paul Cercueil
5f1cff6d0f Build file extensions filter from the MIME types present on the OPK
This feature is enabled only if libxdgmime is available.
2012-10-22 23:40:09 +02:00
Paul Cercueil
e7e21b424b Use the '%f' token to insert the selected file on the params.
Other tokens available are '%F', '%u' and '%U'.
It replaces the previous token '[selFile]'.
2012-10-22 23:34:33 +02:00
Paul Cercueil
0fc6ac67f0 Hide the 'params' option from the user on the contextual menu
The user shouldn't care at all about what is given as a parameter.
The 'params' option is only used by the links provided with GMenu2X.
2012-10-22 23:12:21 +02:00
Paul Cercueil
d6cdb90c81 Before launching any app, update the standard I/O file descriptors 2012-10-20 17:32:17 +02:00
Paul Cercueil
6a9f429f32 Update "exec" to aim the binary if a change of directory if needed 2012-10-17 23:48:11 +02:00
Paul Cercueil
0ddc562bf1 Fix icon not appearing on loading menu of OPK packages based links 2012-10-17 23:43:44 +02:00
Paul Cercueil
170a7dc4c6 Add "editable" parameter: when "false", the link can't be modified.
If omitted, the default value is "true".
2012-10-17 23:43:32 +02:00
Paul Cercueil
c1a95a2fa6 Removed unused class variable 'useRamTimings' from LinkApp 2012-10-17 23:43:27 +02:00
Paul Cercueil
4a60aa000d Load the OPK in the section defined by their "Categories" parameter 2012-10-09 01:41:57 +02:00
Paul Cercueil
ef18841eb1 Fix build when libopk is not present. 2012-10-08 19:46:50 +02:00
Paul Cercueil
f6c19d0aa1 Mount the OPK packages in order to execute the binary included. 2012-10-08 08:22:48 +02:00
Paul Cercueil
909fef2f3a Update to use the latest libopk API. 2012-10-08 08:19:59 +02:00
Paul Cercueil
876f2cff86 Fix a bug where only some parameters were read from the links files. 2012-10-08 06:09:37 +02:00
Paul Cercueil
cd4809343b During init, load all packages in CARD_ROOT/*/apps 2012-10-07 21:51:25 +02:00
Paul Cercueil
61d22e26e6 LinkApp: Added support for reading OPK packages. 2012-10-07 21:50:07 +02:00
Paul Cercueil
e3837fce68 If a filename contains '#' don't check if the file exists. 2012-10-07 20:08:25 +02:00
Paul Cercueil
0cbb5ee09a Make loadPNG() able to read files from OPK packages.
The filename passed to it should contain the filename of the squashfs
image, the character '#', and the filename of the .png file contained
inside the package.

E.g.:
/tmp/package.opk#icon.png
2012-10-07 20:04:30 +02:00
Paul Cercueil
3dc12d06ea menu.cpp: Don't use stat() to know if a FS entry is a directory
The pointer returned by readdir() already informs us of the type
of the FS entry.
2012-10-06 17:38:58 +02:00
Paul Cercueil
16d66d0dbc Remove unused (proprietary-licensed for some) XCF fonts. 2012-06-25 00:39:37 +02:00
Paul Cercueil
1241523105 Removed variable/function to get the directory of the executable.
The application shouldn't care from which directory it is being
executed.
2012-06-24 23:19:45 +02:00
Paul Cercueil
cf20f3673e Use function getSkinPath() instead of reading the dir of the binary
... which was certain to fail as the skins are not located on
/usr/bin.
2012-06-24 23:18:02 +02:00
Paul Cercueil
a21650d6b3 Don't re-execute gmenu2x on error, just call main() again. 2012-06-24 23:01:28 +02:00
Paul Cercueil
0d9977e54c Open battery/USB file handlers only when needed. 2012-06-24 22:48:50 +02:00
Paul Cercueil
7484ad2ef0 Check if USB cable is plugged before returning the battery level. 2012-06-24 22:41:16 +02:00
Paul Cercueil
64db1d7912 Don't scan the NAND as it's already done elsewhere.
If mounted, the NAND should be present as /media/ccnandb1 (dingux
build) but /media is already scanned.
2012-06-24 22:19:36 +02:00
Paul Cercueil
d6621584e3 Removed last bits of the "backlight" feature. 2012-06-15 00:13:59 +02:00
Paul Cercueil
21fee6ccd1 Removed last bits of the "volume" feature. 2012-06-14 23:59:39 +02:00
Paul Cercueil
dd047010ed Removed old commented code. 2012-06-14 23:53:19 +02:00
Paul Cercueil
9263c782e7 Drop GP2X platform support.
The GP2X build was unused and totally broken.
2012-06-14 23:45:57 +02:00
Paul Cercueil
374371c1d2 Removed unused (and broken) TV-out feature. 2012-06-14 22:53:50 +02:00
Paul Cercueil
bc2b5d51ed Removed unused function GMenu2X:setGamma() 2012-06-14 20:14:19 +02:00
Paul Cercueil
1080527822 Don't log the console-based apps. 2012-06-14 17:39:59 +02:00
Paul Cercueil
c2576d418b Read the credits from the "about.txt" file.
The credits have also been updated.
2012-04-27 17:42:09 +02:00
Paul Cercueil
d1328d791c Switch to tty1 for console apps (Dingux build only).
Console apps are always launched on tty1. However it can occur that
the console displayed on the framebuffer is another one, so we have
to explicitely activate tty1.
2012-04-18 01:35:46 +02:00
Paul Cercueil
e6ca072c46 Added a "show console" link parameter (Dingux build only). 2012-04-13 19:21:49 +02:00
Paul Cercueil
7687212b4e Removed the "wrapper" feature.
It is up to the system to restart GMenu2X when the application exits.
2012-04-13 18:12:30 +02:00
Maarten ter Huurne
8f57afcf53 Explicitly convert 32-bit integers to 16-bit.
GCC 4.7.0 warns that C++11 considers doing this implicitly ill-formed.
2012-04-10 23:01:16 +02:00
Maarten ter Huurne
46f2edbc76 BrowseDialog: Code layout cleanup.
No functional changes, except for fetching "topBarHeight" only once.
2012-04-10 22:55:19 +02:00
Maarten ter Huurne
58d6077e5c Touchscreen: Avoid constructing an SDL_Rect for is-inside tests.
Made the SDL_Rect versions of the methods call the plain-int versions
instead of vice versa.
2012-04-10 22:44:56 +02:00
Maarten ter Huurne
b248aaf808 Surface cleanup.
Use unsigned ints for width and height, like SDL does.
We're using the SDL typedefs there after all.

Include argument names in header when type name does tell everything.

Use whitespace in argument lists.
2012-04-10 22:33:43 +02:00
Maarten ter Huurne
fd642ffe9a SettingsDialog: Code layout cleanup.
No functional changes, except for fetching "topBarHeight" only once.
2012-04-10 22:09:20 +02:00
Maarten ter Huurne
ed8b0c38ba Don't overwrite link action provided to constructor.
Fixes bug introduced in 57ad81e3df.
This bug would prevent applications from launching, so it's pretty serious.
I did test before committing, but apparently I didn't test the right binary.
2012-04-10 20:30:36 +02:00