Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,12 +35,16 @@ find_package(LibXml2 REQUIRED)
set(PROJECT_SOURCES
src/main.cpp
src/maindialog.cpp src/maindialog.h src/maindialog.ui

src/layoutmodel.cpp src/layoutmodel.h

src/environment.cpp src/environment.h
src/settings.cpp src/settings.h
src/xml.cpp src/xml.h
src/appearance.cpp src/appearance.h src/appearance.ui
src/find-themes.cpp src/find-themes.h

src/appearance.cpp src/appearance.h src/appearance.ui
src/behaviour.cpp src/behaviour.h src/behaviour.ui
)
set(PROJECT_OTHER_FILES
.github/workflows/build.yml
Expand Down
2 changes: 0 additions & 2 deletions src/appearance.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ Appearance::~Appearance()

void Appearance::activate()
{
/* # APPEARANCE */

/* Labwc Theme */
QStringList labwcThemes = findLabwcThemes();
ui->openboxTheme->addItems(labwcThemes);
Expand Down
29 changes: 29 additions & 0 deletions src/behaviour.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include "behaviour.h"
#include "find-themes.h"
#include "macros.h"
#include "settings.h"
#include "./ui_behaviour.h"

Behaviour::Behaviour(QWidget *parent) : QWidget(parent), ui(new Ui::pageBehaviour)
{
ui->setupUi(this);
}

Behaviour::~Behaviour()
{
delete ui;
}

void Behaviour::activate()
{
/* Placement Policy */
QStringList policies = { "", "Automatic", "Cascade", "Center", "Cursor" };
ui->placementPolicy->addItems(policies);
ui->placementPolicy->setCurrentIndex(
policies.indexOf(getStr("/labwc_config/placement/policy")));
}

void Behaviour::onApply()
{
setStr("/labwc_config/placement/policy", TEXT(ui->placementPolicy));
}
25 changes: 25 additions & 0 deletions src/behaviour.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
#ifndef BEHAVIOUR_H
#define BEHAVIOUR_H
#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui {
class pageBehaviour;
}
QT_END_NAMESPACE

class Behaviour : public QWidget
{
Q_OBJECT

public:
Behaviour(QWidget *parent = nullptr);
~Behaviour();

void activate();
void onApply();

private:
Ui::pageBehaviour *ui;
};
#endif // BEHAVIOUR_H
40 changes: 40 additions & 0 deletions src/behaviour.ui
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>pageBehaviour</class>
<widget class="QWidget" name="pageBehaviour">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>251</width>
<height>153</height>
</rect>
</property>
<layout class="QFormLayout" name="layPage">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Placement Policy</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="placementPolicy"/>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>
25 changes: 16 additions & 9 deletions src/evdev-lst-layouts.h
Original file line number Diff line number Diff line change
Expand Up @@ -79,10 +79,10 @@ static std::vector<struct layout> evdev_lst_layouts = {
{ "ba(unicode)", "Bosnian (with Bosnian digraphs)" },
{ "ba(alternatequotes)", "Bosnian (with guillemets)" },
{ "brai", "Braille" },
{ "brai(left_hand_invert)", "Braille (left-handed inverted thumb)" },
{ "brai(left_hand)", "Braille (left-handed)" },
{ "brai(right_hand_invert)", "Braille (right-handed inverted thumb)" },
{ "brai(right_hand)", "Braille (right-handed)" },
{ "brai(left_hand)", "Braille (one-handed, left)" },
{ "brai(left_hand_invert)", "Braille (one-handed, left, inverted thumb)" },
{ "brai(right_hand)", "Braille (one-handed, right)" },
{ "brai(right_hand_invert)", "Braille (one-handed, right, inverted thumb)" },
{ "fr(bre)", "Breton (France)" },
{ "bg", "Bulgarian" },
{ "bg(bekl)", "Bulgarian (enhanced)" },
Expand Down Expand Up @@ -141,16 +141,18 @@ static std::vector<struct layout> evdev_lst_layouts = {
{ "us(colemak_dh_wide)", "English (Colemak-DH Wide)" },
{ "us(colemak_dh)", "English (Colemak-DH)" },
{ "us(dvorak)", "English (Dvorak)" },
{ "us(dvorak-mac)", "English (Dvorak, Macintosh)" },
{ "us(dvorak-mac)", "English (Dvorak, Macintosh, ANSI)" },
{ "us(dvorak-mac-iso)", "English (Dvorak, Macintosh, ISO)" },
{ "us(dvorak-alt-intl)", "English (Dvorak, alt. intl.)" },
{ "us(dvorak-intl)", "English (Dvorak, intl., with dead keys)" },
{ "us(dvorak-l)", "English (Dvorak, left-handed)" },
{ "us(dvorak-r)", "English (Dvorak, right-handed)" },
{ "us(dvorak-l)", "English (Dvorak, one-handed, left)" },
{ "us(dvorak-r)", "English (Dvorak, one-handed, right)" },
{ "gh", "English (Ghana)" },
{ "gh(gillbt)", "English (Ghana, GILLBT)" },
{ "gh(generic)", "English (Ghana, multilingual)" },
{ "in(eng)", "English (India, with rupee)" },
{ "us(mac)", "English (Macintosh)" },
{ "us(mac)", "English (Macintosh, ABC, ANSI)" },
{ "us(mac-iso)", "English (Macintosh, ABC, ISO)" },
{ "ml(us-mac)", "English (Mali, US, Macintosh)" },
{ "ml(us-intl)", "English (Mali, US, intl.)" },
{ "nz", "English (New Zealand)" },
Expand Down Expand Up @@ -215,6 +217,8 @@ static std::vector<struct layout> evdev_lst_layouts = {
{ "ca(fr-legacy)", "French (Canada, legacy)" },
{ "cd", "French (Democratic Republic of the Congo)" },
{ "fr(dvorak)", "French (Dvorak)" },
{ "fr(ergol)", "French (Ergo‑L)" },
{ "fr(ergol_iso)", "French (Ergo‑L, ISO variant)" },
{ "fr(mac)", "French (Macintosh)" },
{ "ml(fr-oss)", "French (Mali, alt.)" },
{ "ma(french)", "French (Morocco)" },
Expand Down Expand Up @@ -319,7 +323,6 @@ static std::vector<struct layout> evdev_lst_layouts = {
{ "it(nodeadkeys)", "Italian (no dead keys)" },
{ "jp", "Japanese" },
{ "jp(dvorak)", "Japanese (Dvorak)" },
{ "jp(kana86)", "Japanese (Kana 86)" },
{ "jp(kana)", "Japanese (Kana)" },
{ "jp(mac)", "Japanese (Macintosh)" },
{ "jp(OADG109A)", "Japanese (OADG 109A)" },
Expand Down Expand Up @@ -533,6 +536,7 @@ static std::vector<struct layout> evdev_lst_layouts = {
{ "ke", "Swahili (Kenya)" },
{ "tz", "Swahili (Tanzania)" },
{ "se", "Swedish" },
{ "se(colemak)", "Swedish (Colemak)" },
{ "se(dvorak)", "Swedish (Dvorak)" },
{ "se(us_dvorak)", "Swedish (Dvorak, intl.)" },
{ "se(mac)", "Swedish (Macintosh)" },
Expand Down Expand Up @@ -560,6 +564,7 @@ static std::vector<struct layout> evdev_lst_layouts = {
{ "in(tel-kagapa)", "Telugu (KaGaPa, phonetic)" },
{ "in(tel-sarala)", "Telugu (Sarala)" },
{ "th", "Thai" },
{ "th(mnc)", "Thai (Manoonchai)" },
{ "th(pat)", "Thai (Pattachote)" },
{ "th(tis)", "Thai (TIS-820.2538)" },
{ "cn(tib)", "Tibetan" },
Expand All @@ -575,12 +580,14 @@ static std::vector<struct layout> evdev_lst_layouts = {
{ "tm(alt)", "Turkmen (Alt-Q)" },
{ "ru(udm)", "Udmurt" },
{ "ua", "Ukrainian" },
{ "ua(winkeysenhanced)", "Ukrainian (Windows Enhanced)" },
{ "ua(winkeys)", "Ukrainian (Windows)" },
{ "ua(homophonic)", "Ukrainian (homophonic)" },
{ "ua(legacy)", "Ukrainian (legacy)" },
{ "ua(macOS)", "Ukrainian (macOS)" },
{ "ua(phonetic)", "Ukrainian (phonetic)" },
{ "ua(typewriter)", "Ukrainian (typewriter)" },
{ "pk(pak_urdu_phonetic)", "Urdu (Pak Urdu Phonetic)" },
{ "pk", "Urdu (Pakistan)" },
{ "pk(urd-crulp)", "Urdu (Pakistan, CRULP)" },
{ "pk(urd-nla)", "Urdu (Pakistan, NLA)" },
Expand Down
10 changes: 2 additions & 8 deletions src/maindialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,8 @@ void MainDialog::deleteSelectedLayout(void)

void MainDialog::activate()
{
/* # APPEARANCE */
ui->pageAppearance->activate();

/* # BEHAVIOUR */
QStringList policies = { "", "Automatic", "Cascade", "Center", "Cursor" };
ui->placementPolicy->addItems(policies);
ui->placementPolicy->setCurrentIndex(
policies.indexOf(getStr("/labwc_config/placement/policy")));
ui->pageBehaviour->activate();

/* # MOUSE & TOUCHPAD */

Expand Down Expand Up @@ -96,10 +90,10 @@ void MainDialog::activate()
void MainDialog::onApply()
{
ui->pageAppearance->onApply();
ui->pageBehaviour->onApply();

/* ~/.config/labwc/rc.xml */
setBool("/labwc_config/libinput/device/naturalScroll", TEXT(ui->naturalScroll));
setStr("/labwc_config/placement/policy", TEXT(ui->placementPolicy));
xml_save();

/* ~/.config/labwc/environment */
Expand Down
32 changes: 6 additions & 26 deletions src/maindialog.ui
Original file line number Diff line number Diff line change
Expand Up @@ -89,32 +89,7 @@
<item>
<widget class="QStackedWidget" name="stack">
<widget class="Appearance" name="pageAppearance"/>
<widget class="QWidget" name="page">
<layout class="QFormLayout" name="layPage">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_7">
<property name="text">
<string>Placement Policy</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QComboBox" name="placementPolicy"/>
</item>
</layout>
</widget>
<widget class="Behaviour" name="pageBehaviour"/>
<widget class="QWidget" name="page2">
<layout class="QFormLayout" name="layPage2">
<property name="leftMargin">
Expand Down Expand Up @@ -258,6 +233,11 @@
<extends>QWidget</extends>
<header>appearance.h</header>
</customwidget>
<customwidget>
<class>Behaviour</class>
<extends>QWidget</extends>
<header>behaviour.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections>
Expand Down
13 changes: 12 additions & 1 deletion src/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,15 @@ Setting::Setting(QString name, enum settingFileType fileType, enum settingValueT
break;
}
}
};
}

void Setting::setValue(std::variant<int, QString> value)
{
if (value != m_value) {
m_valueOrigin = LAB_VALUE_ORIGIN_CHANGED_IN_THIS_SESSION;
m_value = value;
}
}

static std::shared_ptr<Setting> retrieve(QString name)
{
Expand Down Expand Up @@ -185,6 +193,7 @@ void setInt(QString name, int value)
info("'{} has changed to '{}'", name.toStdString(), value);
xpath_add_node(name.toStdString().c_str());
xml_set_num(name.toStdString().c_str(), value);
setting->setValue(value);
}
}

Expand All @@ -202,6 +211,7 @@ void setStr(QString name, QString value)
info("'{} has changed to '{}'", name.toStdString(), value.toStdString());
xpath_add_node(name.toStdString().c_str());
xml_set(name.toStdString().c_str(), value.toStdString().c_str());
setting->setValue(value);
}
}

Expand Down Expand Up @@ -254,5 +264,6 @@ void setBool(QString name, QString value)
info("'{} has changed to '{}'", name.toStdString(), value.toStdString());
xpath_add_node(name.toStdString().c_str());
xml_set(name.toStdString().c_str(), value.toStdString().c_str());
setting->setValue(value);
}
}
7 changes: 2 additions & 5 deletions src/settings.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ enum settingValueOrigin {
LAB_VALUE_ORIGIN_UNKNOWN = 0,
LAB_VALUE_ORIGIN_DEFAULT,
LAB_VALUE_ORIGIN_USER_OVERRIDE,
LAB_VALUE_ORIGIN_CHANGED_IN_THIS_SESSION,
};

enum settingValueType {
Expand All @@ -37,6 +38,7 @@ class Setting
public:
Setting(QString name, enum settingFileType fileType, enum settingValueType valueType,
std::variant<int, QString> defaultValue);
void setValue(std::variant<int, QString> value);

private:
QString m_name;
Expand All @@ -62,8 +64,3 @@ void setInt(QString name, int value);
void setStr(QString name, QString value);
int parseBool(const char *str, int defaultValue);
void setBool(QString name, QString value);