mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-02 09:52:27 -04:00
add ConfigPage.setSort()
This commit is contained in:
parent
4ce7bb00a2
commit
42764ffee5
@ -33,7 +33,7 @@ else:
|
|||||||
from direct.showbase import VFSImporter
|
from direct.showbase import VFSImporter
|
||||||
|
|
||||||
from direct.showbase.DirectObject import DirectObject
|
from direct.showbase.DirectObject import DirectObject
|
||||||
from pandac.PandaModules import VirtualFileSystem, Filename, Multifile, loadPrcFileData, unloadPrcFile, getModelPath, Thread, WindowProperties, ExecutionEnvironment, PandaSystem, Notify, StreamWriter, ConfigVariableString, initAppForGui
|
from pandac.PandaModules import VirtualFileSystem, Filename, Multifile, loadPrcFileData, unloadPrcFile, getModelPath, Thread, WindowProperties, ExecutionEnvironment, PandaSystem, Notify, StreamWriter, ConfigVariableString, ConfigPageManager, initAppForGui
|
||||||
from pandac import PandaModules
|
from pandac import PandaModules
|
||||||
from direct.stdpy import file, glob
|
from direct.stdpy import file, glob
|
||||||
from direct.task.TaskManagerGlobal import taskMgr
|
from direct.task.TaskManagerGlobal import taskMgr
|
||||||
@ -1011,12 +1011,24 @@ class AppRunner(DirectObject):
|
|||||||
# the Multifile interface to find the prc files, rather than
|
# the Multifile interface to find the prc files, rather than
|
||||||
# vfs.scanDirectory(), so we only pick up the files in this
|
# vfs.scanDirectory(), so we only pick up the files in this
|
||||||
# particular multifile.
|
# particular multifile.
|
||||||
|
cpMgr = ConfigPageManager.getGlobalPtr()
|
||||||
for f in mf.getSubfileNames():
|
for f in mf.getSubfileNames():
|
||||||
fn = Filename(f)
|
fn = Filename(f)
|
||||||
if fn.getDirname() == '' and fn.getExtension() == 'prc':
|
if fn.getDirname() == '' and fn.getExtension() == 'prc':
|
||||||
pathname = '%s/%s' % (root, f)
|
pathname = '%s/%s' % (root, f)
|
||||||
data = file.open(Filename(pathname), 'r').read()
|
|
||||||
loadPrcFileData(pathname, data)
|
alreadyLoaded = False
|
||||||
|
for cpi in range(cpMgr.getNumImplicitPages()):
|
||||||
|
if cpMgr.getImplicitPage(cpi).getName() == pathname:
|
||||||
|
# No need to load this file twice.
|
||||||
|
alreadyLoaded = True
|
||||||
|
break
|
||||||
|
|
||||||
|
if not alreadyLoaded:
|
||||||
|
data = file.open(Filename(pathname), 'r').read()
|
||||||
|
cp = loadPrcFileData(pathname, data)
|
||||||
|
# Set it to sort value 20, behind the implicit pages.
|
||||||
|
cp.setSort(20)
|
||||||
|
|
||||||
|
|
||||||
def __clearWindowProperties(self):
|
def __clearWindowProperties(self):
|
||||||
|
@ -22,11 +22,10 @@
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
INLINE bool ConfigPage::
|
INLINE bool ConfigPage::
|
||||||
operator < (const ConfigPage &other) const {
|
operator < (const ConfigPage &other) const {
|
||||||
if (is_implicit() != other.is_implicit()) {
|
// The explicit sort value is the most important setting. It's
|
||||||
// Explicitly-loaded pages are more important than
|
// usually zero unless explicitly changed.
|
||||||
// implicitly-loaded pages, so put the implicit pages at the end
|
if (get_sort() != other.get_sort()) {
|
||||||
// of the list.
|
return get_sort() < other.get_sort();
|
||||||
return (int)is_implicit() < (int)other.is_implicit();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Within the implicit/explicit categorization, sort by the page
|
// Within the implicit/explicit categorization, sort by the page
|
||||||
@ -73,6 +72,17 @@ is_implicit() const {
|
|||||||
return _implicit_load;
|
return _implicit_load;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigPage::get_sort
|
||||||
|
// Access: Published
|
||||||
|
// Description: Returns the explicit sort order of this particular
|
||||||
|
// ConfigPage. See set_sort().
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
INLINE int ConfigPage::
|
||||||
|
get_sort() const {
|
||||||
|
return _sort;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: ConfigPage::get_page_seq
|
// Function: ConfigPage::get_page_seq
|
||||||
// Access: Published
|
// Access: Published
|
||||||
|
@ -41,6 +41,7 @@ ConfigPage(const string &name, bool implicit_load, int page_seq) :
|
|||||||
_name(name),
|
_name(name),
|
||||||
_implicit_load(implicit_load),
|
_implicit_load(implicit_load),
|
||||||
_page_seq(page_seq),
|
_page_seq(page_seq),
|
||||||
|
_sort(implicit_load ? 10 : 0),
|
||||||
_next_decl_seq(1),
|
_next_decl_seq(1),
|
||||||
_trust_level(0)
|
_trust_level(0)
|
||||||
{
|
{
|
||||||
@ -89,6 +90,26 @@ get_local_page() {
|
|||||||
return _local_page;
|
return _local_page;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigPage::set_sort
|
||||||
|
// Access: Published
|
||||||
|
// Description: Changes the explicit sort order of this particular
|
||||||
|
// ConfigPage. Lower-numbered pages supercede
|
||||||
|
// higher-numbered pages. Initially, all
|
||||||
|
// explicitly-loaded pages have sort value 0, and
|
||||||
|
// implicitly-loaded pages (found on disk) have sort
|
||||||
|
// value 10; you may set an individual page higher or
|
||||||
|
// lower to influence its priority relative to other
|
||||||
|
// pages.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
void ConfigPage::
|
||||||
|
set_sort(int sort) {
|
||||||
|
if (_sort != sort) {
|
||||||
|
_sort = sort;
|
||||||
|
ConfigPageManager::get_global_ptr()->mark_unsorted();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: ConfigPage::clear
|
// Function: ConfigPage::clear
|
||||||
// Access: Published
|
// Access: Published
|
||||||
|
@ -47,6 +47,9 @@ PUBLISHED:
|
|||||||
INLINE bool is_special() const;
|
INLINE bool is_special() const;
|
||||||
INLINE bool is_implicit() const;
|
INLINE bool is_implicit() const;
|
||||||
|
|
||||||
|
void set_sort(int sort);
|
||||||
|
INLINE int get_sort() const;
|
||||||
|
|
||||||
INLINE int get_page_seq() const;
|
INLINE int get_page_seq() const;
|
||||||
INLINE int get_trust_level() const;
|
INLINE int get_trust_level() const;
|
||||||
INLINE void set_trust_level(int trust_level);
|
INLINE void set_trust_level(int trust_level);
|
||||||
@ -78,6 +81,7 @@ private:
|
|||||||
string _name;
|
string _name;
|
||||||
bool _implicit_load;
|
bool _implicit_load;
|
||||||
int _page_seq;
|
int _page_seq;
|
||||||
|
int _sort;
|
||||||
int _next_decl_seq;
|
int _next_decl_seq;
|
||||||
int _trust_level;
|
int _trust_level;
|
||||||
|
|
||||||
|
@ -188,6 +188,20 @@ get_explicit_page(int n) const {
|
|||||||
return _explicit_pages[n];
|
return _explicit_pages[n];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: ConfigPageManager::mark_unsorted()
|
||||||
|
// Access: Public
|
||||||
|
// Description: This method is meant to be used internally to this
|
||||||
|
// module; there is no need to call it directly. It
|
||||||
|
// indicates that the sort values of some pages may have
|
||||||
|
// changed and pages need to be re-sorted.
|
||||||
|
////////////////////////////////////////////////////////////////////
|
||||||
|
INLINE void ConfigPageManager::
|
||||||
|
mark_unsorted() {
|
||||||
|
_pages_sorted = false;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: ConfigPageManager::check_sort_pages()
|
// Function: ConfigPageManager::check_sort_pages()
|
||||||
// Access: Private
|
// Access: Private
|
||||||
|
@ -66,6 +66,9 @@ PUBLISHED:
|
|||||||
|
|
||||||
static ConfigPageManager *get_global_ptr();
|
static ConfigPageManager *get_global_ptr();
|
||||||
|
|
||||||
|
public:
|
||||||
|
INLINE void mark_unsorted();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
INLINE void check_sort_pages() const;
|
INLINE void check_sort_pages() const;
|
||||||
void sort_pages();
|
void sort_pages();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user