You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
2.0 KiB
128 lines
2.0 KiB
/* |
|
* Xournal++ |
|
* |
|
* Path for file / folder handling |
|
* |
|
* @author Xournal++ Team |
|
* https://github.com/xournalpp/xournalpp |
|
* |
|
* @license GNU GPLv2 or later |
|
*/ |
|
|
|
#pragma once |
|
|
|
#include <glib.h> |
|
#include <gio/gio.h> |
|
|
|
#include <string> |
|
using std::string; |
|
|
|
class Path |
|
{ |
|
public: |
|
Path(); |
|
Path(const Path& other); |
|
Path(string path); |
|
Path(const char* path); |
|
virtual ~Path(); |
|
|
|
public: |
|
/** |
|
* @return true if empty |
|
*/ |
|
bool isEmpty(); |
|
|
|
/** |
|
* Check if this file / folder exists |
|
*/ |
|
bool exists(); |
|
|
|
/** |
|
* Compare the path with another one |
|
*/ |
|
bool operator ==(const Path& other); |
|
|
|
/** |
|
* Assign path |
|
*/ |
|
void operator =(const Path& other); |
|
|
|
/** |
|
* Assign path |
|
*/ |
|
void operator =(const string& path); |
|
|
|
/** |
|
* Assign path |
|
*/ |
|
void operator =(const char* path); |
|
|
|
/** |
|
* Check if the path ends with this extension |
|
* |
|
* @param ext Extension, needs to be lowercase |
|
* @return true if the extension is there |
|
*/ |
|
bool hasExtension(string ext); |
|
|
|
/** |
|
* Clear the extension (last .xyz or .pdf.xoj, .pdf.xopp) |
|
*/ |
|
void clearExtensions(); |
|
|
|
/** |
|
* @return true if this file has .xopp or .xoj extension |
|
*/ |
|
bool hasXournalFileExt(); |
|
|
|
/** |
|
* Return the Path as String |
|
*/ |
|
const string str() const; |
|
|
|
/** |
|
* Return the Path as String |
|
*/ |
|
const char* c_str() const; |
|
|
|
/** |
|
* Get the parent path |
|
*/ |
|
Path getParentPath(); |
|
|
|
/** |
|
* Return the Filename of the path |
|
*/ |
|
string getFilename(); |
|
|
|
/** |
|
* Convert this path to Uri |
|
*/ |
|
string toUri(GError** error = NULL); |
|
|
|
/** |
|
* Get escaped path, all " and \ are escaped |
|
*/ |
|
string getEscapedPath(); |
|
|
|
// Append operations |
|
public: |
|
void operator /=(Path p); |
|
void operator /=(string p); |
|
void operator /=(const char* p); |
|
|
|
void operator +=(Path p); |
|
void operator +=(string p); |
|
void operator +=(const char* p); |
|
|
|
|
|
public: |
|
/** |
|
* Convert an uri to a path, if the uri does not start with file:// an empty Path is returned |
|
*/ |
|
static Path fromUri(string uri); |
|
static Path fromGFile(GFile* file); |
|
|
|
private: |
|
string path; |
|
};
|
|
|